sequelize.js - Sequlize 'as' 和 'foreign key' 属性如何影响关系?
问题描述
我正在学习sequlize。
我正在使用迁移机制开发系统。这意味着我使用迁移添加外键。
我有两个模型,即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
影响关联?我们可以在哪里跳过这些属性?
解决方案
在您的情况下,您只需要定义别名:
// 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
推荐阅读
- php - 如何对从数据库接收的数据运行 Javascript 查询
- ios - RemoveFromParent 联系后具有相同名称的多个节点之一
- node.js - 詹金斯管道nodeJs
- javascript - 带 3 个以上盒子的中心引导轮播
- javascript - Javascript if else 初学者
- javascript - document.write 不在 ie 中工作,但在 chrome 中工作
- algorithm - 如何从已排序的流中最好地构建持久二叉树
- arrays - .sort() 对多个文本和数字数组表现得很奇怪
- r - ggplot2 在 x 轴上的 Year 变量末尾不断添加 .5
- ionic-framework - ios-trash-outline 没有出现