2013-02-24 3 views
0

Je veux "code d'abord" qui génèrent la table par le "Sequelize", voici mon code estassociations Sequelize obtenir des erreurs

var Sequelize = require('sequelize'); 

exports.createTable = function (req, res) {var sequelize = nouveau Sequelize ('myblog', 'root', '');

var Blog = sequelize.define('Blog',{ 
    // the blog id 
    bid: { type: Sequelize.INTEGER, allowNull: false, autoIncrement: true ,primaryKey: true }, 
    // bname 
    btitle: { type: Sequelize.STRING, allowNull: false }, 
    // blog Content 
    bcontent: { type: Sequelize.TEXT, allowNull: false }, 
    // blog date 
    bdate: { type: Sequelize.DATE, defaultValue: Sequelize.NOW } 
}); 

var User = sequelize.define('User',{ 
    // uid 
    uid: { type: Sequelize.INTEGER, allowNull: false ,autoIncrement: true, primaryKey: true }, 
    // uname 
    uname: { type: Sequelize.TEXT, allowNull: false, }, 
    // register date 
    regDate: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.NOW }, 

}); 

Blog.hasMany(User); 
User.hasMany(Blog); 

Blog.sync(); 
User.sync(); 

var blog = Blog.build({ 
    btitle: 'this is a title', 
    bcontent: 'this is a Content!', 
    bdate: new Date() 
}); 

var user1 = User.build({ 
    uname: 'www', 
    uregDate: new Date() 
}); 

var user2 = User.build({ 
    uname: 'www2', 
    uregDate: new Date() 
}); 

blog 
    .save() 
    .success(function() { 
     console.log('blog save suc'); 
    }); 

user1 
    .save() 
    .success(function() { 
     console.log('user save suc') 
    }); 
user2 
    .save() 
    .success(function() { 
     console.log('user save suc') 
    }); 

blog 
    .setUsers([user1,user2])  
    .success(function() { 
     console.log('saved') 
    }) 
    .error(function (err) { 
     console.log(err); 
    }); 
// blog.getUsers() 
// .success(function (ascUser) { 
//  console.log(ascUser); 
// }); 


sequelize 
    .sync() 
    .success(function() { 
     res.send('createTable ok!'); 
    }) 
    .error(function() { 
     res.send('createTable falied!');  
    }); 

}

Et je suis l'erreur: Erreur: ER_BAD_FIELD_ERROR: Unknown column 'User.id' dans « where .... qui peut me aider? beaucoup beaucoup

Répondre

1

À quoi servent les champs bid et uid? Sequelize créera automatiquement un identifiant pour vous, donc si tout cela est utilisé, vous devez les supprimer à moins qu'ils ne soient requis. Je ne suis pas certain, mais je suppose que si vous créez une clé primaire auto-incrémentée, Sequelize ne créera pas automatiquement un champ id, pensant que vous voulez l'utiliser à la place. Mais les associations s'attendent à ce que la colonne soit identifiée. Encore une fois, je ne sais pas pourquoi, mais je parie que si vous supprimez ces champs d'enchères et d'UID, cela fonctionnera comme prévu.

Questions connexes