使用未创建的父对象继承存储对象 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的未来版本中解决
我想知道如何正确存储具有 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的未来版本中解决