我想知道如何正确存储具有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 /我做错了吗?答案 0 :(得分:0)
我发现为什么它没有用。
只是解释一下,我的代码将创建用户实例和产品实例, 但是,sequelize团队已知有关非空外键约束验证的已知错误。
要解决两个方面:
设置虚拟值
制作其他实现,例如创建父实例,然后使用create
我认为这个bug将在未来版本的sequelize中解决