我在单独的文件中分别定义了2个模型Assignment和Area:
./models
--Area.js
--Assignment.js
--index.js
Area.js:
const Area = sequelize.define('area',{ id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true }, name: { type: Sequelize.STRING, } }, { timestamps: false }); Area.hasMany(Assignment, { foreignKey:'areaId'});
Assignment.js:
const Assignment = sequelize.define('assignment',{ id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true, } }, { timestamps: false }); Assignment.associate = models => { models.Assignment.belongsTo(models.Area, { foreignKey: 'areaId', onDelete: "CASCADE", }); };
当我尝试使用 Include 属性查找一些具有区域信息(加入)的作业时,出现错误消息:区域与作业无关!
Assignment.findAll({ include: [{ model: Area }] }).then((assignments) => { res.status(200).json(assignments) }).catch((e) => { res.status(500).json({ error: e.message }) })
谢谢。
答案 0 :(得分:0)
Area.hasMany(Assignment, { foreignKey:'areaId'});
因此,列 areaId 应该在您的Assignment.js
中。但是在您的Assignment
模型中看不到它。
models.Assignment.belongsTo(models.Area, {
foreignKey: 'areaId',
onDelete: "CASCADE",
});
这仅在Assignment.js
最后,您会错过areaId
模型中的Assignment
列。
答案 1 :(得分:0)
在我看来,您似乎缺少内联方法:
Area.associate = models => {
models.Area.hasMany(Assignment, { foreignKey:'areaId'})
};
并且列areaId
也应该在您的Assignment.js
中