0

我想通过“Sequelize”生成表格的“代码优先”,这里我的代码是

var  Sequelize = require('sequelize');

export.createTable = function (req,res) { var sequelize = new 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!');    
    });

}

我得到了错误:错误:ER_BAD_FIELD_ERROR:'where子句中的未知列'User.id'。。。。谁能帮帮我?多谢

4

1 回答 1

1

字段bid和uid是干什么用的?Sequelize 会自动为你创建一个 id,所以如果这就是所有这些,你应该删除它们,除非它们是必需的。我不是很肯定,但我猜如果你创建一个自动递增的主键,Sequelize 可能不会自动创建一个 id 字段,认为你想使用它。但是协会希望该列是 id。同样,不知道为什么,但我敢打赌,如果您删除了这些投标和 uid 字段,它会按您的预期工作。

于 2013-04-30T19:34:50.333 回答