2013-02-24 54 views
0

我想 “代码优先”,它由 “Sequelize” 生成表,在这里我的代码是Sequelize协会得到的错误

var Sequelize = require('sequelize'); 

exports.createTable =功能(REQ,RES){VAR = sequelize新的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!');  
    }); 

}

而且我得到了错误:“where子句未知列 'User.id' ......谁可以帮我:错误:ER_BAD_FIELD_ERROR? thx很多

回答

1

bid和uid是什么字段? Sequelize会自动为你创建一个ID,所以如果这些都是用来做的,你应该删除它们,除非它们是必需的。我不积极,但我猜测,如果你创建一个自动递增的主键Sequelize可能不会自动创建一个ID字段,认为你想用它来代替。但协会期望该列是id。再次,不知道为什么,但我敢打赌,如果您删除这些出价和uid字段,它会按预期工作。