我正在制作现有数据库的模型。我的表通过联结表具有多对多的自引用。连接表有两个字段:' parent_id'和' child_id'。 我试图像这样定义关联:
company.hasMany(company, {as: 'parents', foreignKey: 'child_id', through: 'company_relation'});
company.hasMany(company, {as: 'children', foreignKey: 'parent_id', through: 'company_relation'});
但是,当我试图设立儿童公司时,Sequelize仍在寻找“孩子们”。联结表中的外键,而不是我所定义的' child_id':
company.setChildren([child]);
返回错误:
error: column company_relation.children_id does not exist
如果我不想以单数形式命名我的关联,如何在联结表中定义自定义外键,如下所示:
company.hasMany(company, {as: 'parent', foreignKey: 'child_id', through: 'company_relation'});
company.hasMany(company, {as: 'child', foreignKey: 'parent_id', through: 'company_relation'});
还有其他方法吗?谢谢,对不起,如果我很难理解:)
答案 0 :(得分:2)
阅读此doc关于关联
我一直调试实例然后我有这个问题,他有custom name method (set[As])关联子项(如果使用选项“as”):
for(var method in company) {
console.log(method);
}
我拒绝了“option.as”,因为你需要所有的时间来代替dao model
答案 1 :(得分:0)
即使您在续集关联中定义了外键,也可能忘记在架构中定义引用。
您可以查看document中的代码 标题:在没有约束的情况下强制执行外键引用。
在您的情况下,您公司的定义架构如下所示:
child_id:{
references: {
model: 'Company',
key: 'id'
}
},
parent_id:{
references: {
model: 'Company',
key: 'id'
}
},
希望这会对你有所帮助