我在单独的文件中定义了 2 个模型分配和区域,如下所示:
./models
--Area.js
--Assignment.js
--index.js
区域.js :
const Area = sequelize.define('area',{
ID: {
类型:Sequelize.INTEGER,
自动增量:真,
主键:真
},
名称: {
类型:Sequelize.STRING,
}
}, {
时间戳:假
});
Area.hasMany(Assignment, { foreignKey:'areaId'});
作业.js:
const 赋值 = sequelize.define('赋值',{
ID: {
类型:Sequelize.INTEGER,
自动增量:真,
主键:真,
}
}, {
时间戳:假
});
Assignment.associate = 模型 => {
models.Assignment.belongsTo(models.Area, {
外键:'areaId',
onDelete: "级联",
});
};
当我尝试使用 包含 属性查找具有区域信息(连接)的一些分配时,我收到一条错误消息: 区域与分配无关!
Assignment.findAll({
包括:[{模型:区域}]
}).then((赋值) => {
res.status(200).json(赋值)
}).catch((e) => {
res.status(500).json({ error: e.message })
})
提前致谢。
最佳答案
Area.hasMany(Assignment, { foreignKey:'areaId'});
所以列 areaId 应该在你的
Assignment.js
中。但是在您的 Assignment
模型中看不到它。models.Assignment.belongsTo(models.Area, {
foreignKey: 'areaId',
onDelete: "CASCADE",
});
此外,仅当您的
Assignment.js
中有一个名为 areaId 的列时,这才是正确的总之,您错过了
areaId
模型中的 Assignment
列。
关于node.js - sequelize include,连接两个关联表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54430973/