我正在学习连续化。
我正在使用迁移机制开发系统。这意味着我将使用迁移来添加外键。
我有两个模型,分别是banners
和restaurants
。
一个餐厅可以有很多横幅。 一个横幅属于一家餐馆。
所以在我的餐厅模型
中restaurants.associate = function (models) {
restaurants.hasMany(models.banners, {
foreignKey: 'restaurant_id'
})
}
在我的横幅广告模式
中banners.associate = function (models) {
banners.belongsTo(models.restaurants,{foreignKey: 'restaurant_id'});
banners.belongsTo(models.regions,{foreignKey:"region_id"});
};
当我尝试此查询
const pending = await db.banners.findAll({
where: {
status: 'pending'
},
include: ['restaurants']
})
这给了我错误
别名为“ restaurants”的协会不存在
我的问题是为什么会发生这种情况? as
和foreignKey
属性如何影响关联?在哪里可以跳过这些属性?
答案 0 :(得分:1)
在这种情况下,您需要定义别名:
// in your model file
banners.belongsTo( models.restaurants , { as: 'restaurants' , foreignKey: 'restaurant_id'});
//from your api
db.banners.findAll({
where: {
status: 'pending'
},
include: ['restaurants'] // <--- If name is string then it should be alias name
});
如果您不想定义别名,也可以使用
include: [models.restaurants] // <--- you can also use this