Sequelize hasOne / hasMany不添加FK

时间:2017-05-20 09:35:22

标签: database foreign-keys sequelize.js

为什么没有sequelize添加外键如果我这样做(一切都在生成器函数内):

User.hasOne(Request)
Request.belongsTo(User)

let usr = yield User.create({name: 'John'})
let req = yield Request.create({title: 'smthng'})

req.setUser(usr)
usr.setRequest(req)

该请求后有用户的外键,但用户没有。为什么呢?

UPD
我也可以添加属于同一用户的多个请求

1 个答案:

答案 0 :(得分:1)

我已经在post之前回答了这个问题。基本上来自hasOne和hasMany的声明它们在目标模型上创建FK。如果您认为FK在关系1:1上停留在原始模型上,则必须使用belongsTo,即使是续集文档也建议使用here

  

即使它被称为HasOne关联,对于大多数1:1关系,您通常需要BelongsTo关联,因为BelongsTo会在hasOne将添加到目标上的源上添加foreignKey。

对于1:N之间的关系,除了hasMany之外没有其他选项,正如我所说,它在目标模型上创建了FK,因为它是如何工作的1:N关系。