我一直在尝试定义3个表之间的关系,然后在一个create函数中创建它们。由于某些原因,在创建3个模型时,链接ID(外键)是未定义的,并且不会传递。以下是它们之间的关联:
Person.js:
models.person.Lead = models.person.hasMany(models.lead, {
onDelete: "CASCADE",
foreignKey: "person_id"
});Lead.js:
models.lead.Person = models.lead.belongsTo(models.person, {foreignKey: 'person_id'});
models.lead.Sealant_customer = models.lead.hasOne(models.sealant_customer, {
onDelete: "CASCADE",
foreignKey: 'lead_id'
})sealantCustomer.js:
models.sealant_customer.Lead = models.sealant_customer.belongsTo(models.lead);构建函数:
let sealantCustomer = models.sealant_customer.build({
address: body.address,
city: body.city,
roof_size: body.roofSize,
last_sealed: body.lastSealed,
existingSealant: body.existingSealant,
leaks_freq: body.leaksFrequency,
floor: body.floor,
elevator: body.elevator,
panels: body.panels,
home_type: body.homeType,
urgency: body.urgency,
next_step: body.nextStep,
more_info: body.moreInfo,
lead: {
site,
url: body.url,
date,
ip: body.ip,
person: {
name: body.name,
email: body.email,
phone: body.phone,
date,
city: body.city ? body.city : undefined,
address: body.address ? body.address : undefined,
}
}
}, {
include: [{
model: models.lead,
association: models.sealant_customer.Lead,
include: [{
model: models.person,
association: models.lead.Person
}]
}]
})输出的对象是好的,除了lead_id和person_id是空的这一事实(每个模型都有自己的ID,但没有相关模型的id)。我还应该注意到,没有验证错误,数据也很好。
发布于 2019-02-21 17:04:53
据我所知,这个库在build函数中有一个bug。与create相同的语法可以完美地工作。
发布于 2021-08-06 11:55:08
在Sequelize v6中,include部分中的关联标识符无效。否则,这个构建函数应该可以正常工作。
https://stackoverflow.com/questions/54322453
复制相似问题