使用不创建的父对象定义存储对象belongsTo

时间:2015-10-12 14:43:39

标签: node.js sequelize.js model-associations

我想知道如何正确存储具有belongsTo关系的对象和非null的外键列。

示例:

我如何在index.js中声明关联

User.hasMany(Product)

Product.BelongsTo(User)

考虑到在Product表中我们在用户表中有一个外键列NOT NULL引用id。

根据续集文档(here),

我可以这样写:

    Product.create({
        title: 'Chair',
        User: {
        first_name: 'Mick',
        last_name: 'Broadstone'
       }
    }, {include: [ User ]});

但我总是有这个错误:

[错误:列#34中的空值; user_id"违反非空约束]

如果我检查SQL日志,我注意到Sequelize试图将带有NULL的User之前的Product插入user_id列。

我的问题是:

1 /外键列必须可以用续集来为空吗?

2此代码之前插入用户,然后产品与所需关系插入,不是吗?

3 /我做错了吗?

1 个答案:

答案 0 :(得分:0)

我发现为什么它没有用。

只是解释一下,我的代码将创建用户实例和产品实例, 但是,sequelize团队已知有关非空外键约束验证的已知错误。

要解决两个方面:

  • 设置虚拟值

  • 制作其他实现,例如创建父实例,然后使用create

我认为这个bug将在未来版本的sequelize中解决