我有两个模型赋值和区域,每个都定义在单独的文件中,如下所示:
./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", }); };
当我试图用包含属性的区域信息(join)找到一些赋值时,我得到了一个错误,说:区域不关联到赋值!
Assignment.findAll({ include: [{ model: Area }] }).then((assignments) => { res.status(200).json(assignments) }).catch((e) => { res.status(500).json({ error: e.message }) })
提前谢谢你。
Area.hasMany(Assignment, { foreignKey:'areaId'});
所以列areaId应该在
models.Assignment.belongsTo(models.Area, {
foreignKey: 'areaId',
onDelete: "CASCADE",
});
null
总之,您错过了
在我看来,您似乎缺少了附带的associate方法:
Area.associate = models => {
models.Area.hasMany(Assignment, { foreignKey:'areaId'})
};
null