0

「Sequelize」でテーブルを生成する「code-first」をしたいのですが、ここに私のコードがあります

var  Sequelize = require('sequelize');

exports.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!');    
    });

}

そして、エラーが発生しました:Error:ER_BAD_FIELD_ERROR:Unknown column'User.id' in'whereclause。。。。誰が私を助けることができますか?ありがとう

4

1 に答える 1

1

bid フィールドと uid フィールドの目的は何ですか? Sequelize は自動的に ID を作成するので、それらがすべて使用されている場合は、必要でない限り削除する必要があります。私は肯定的ではありませんが、自動インクリメントの主キーを作成すると、Sequelize が id フィールドを自動的に作成しない可能性があり、代わりにそれを使用したいと考えていると思います。しかし、関連付けは、列が id であることを期待しています。理由はわかりませんが、bid フィールドと uid フィールドを削除すれば、期待どおりに動作するはずです。

于 2013-04-30T19:34:50.333 に答える