mysql - Sequelize 关联出现错误

标签 mysql node.js sequelize.js

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

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 columns 'User.id' in 'where Clause。。。。谁能帮助我?非常感谢

最佳答案

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

关于mysql - Sequelize 关联出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048668/

相关文章:

mysql - 将撇号插入mysql数据库

MySQL 根据列值旋转列名称?

javascript - 是否可以创建一个命令输出直接到终端的 Vorpal 应用程序,而不是它自己的 shell?

javascript - 如何获取嵌套对象的默认值,包括零作为值

node.js - 插入后立即返回 null 的 Sequelize 关系助手方法

mysql - 通过 GUI 在 SQuirreL SQL 中创建一个新表?

PHP如何使用for循环的变量与mysql_fetch_array来指示获取数据的行?

javascript - 在 typescript 中导入/导出变量的最佳方法是什么?

javascript - Sequelize 模型查询 - 为什么两条路线不能同时工作?

postgresql - Sequelize PostgreSQL 字母排序