使用未创建的父对象继承存储对象 belongsTo

Sequelize store object belongsTo with parent object which is not create

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

示例:

我如何在 index.js

中声明关联
User.hasMany(Product)

Product.BelongsTo(User)

考虑到在产品 table 中我们有一个外键列 NOT NULL 引用用户 Table 中的 ID。

根据续集文档 (here),

我可以这样写:

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

但我总是遇到这个错误:

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

如果我检查 SQL 日志,我注意到 Sequelize 正在尝试将 Product before User with NULL 插入 user_id 列。

我的问题是:

1/ 使用 sequelize 外键列必须可以为空?

2 这段代码先插入用户,然后再插入具有所需关系的产品,不是吗?

3/我是不是也做错了什么?

我找到了它不起作用的原因。

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

有两种解决方法:

  • 输入一个虚拟值

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

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