Sequelize.js Sequalize how';as';和';外键';属性对关系有何影响?
我在学Sequalize 我正在使用迁移机制开发系统。这意味着我使用迁移添加外键 我有两种型号,即Sequelize.js Sequalize how';as';和';外键';属性对关系有何影响?,sequelize.js,Sequelize.js,我在学Sequalize 我正在使用迁移机制开发系统。这意味着我使用迁移添加外键 我有两种型号,即横幅和餐厅 一家餐厅可以有许多横幅。 一条横幅属于一家餐厅 所以在我的餐厅模式中 restaurants.associate = function (models) { restaurants.hasMany(models.banners, { foreignKey: 'restaurant_id' }) } banners.associate = function
横幅
和餐厅
一家餐厅可以有许多横幅。
一条横幅属于一家餐厅
所以在我的餐厅模式中
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"});
};
在我的横幅模型中
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']
})
这给了我一个错误
与别名“餐馆”的关联不存在
我的问题是为什么会发生这种情况?以及
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
});
//在模型文件中
banner.belongsTo(models.restaurants,{as:'restaurants',foreignKey:'restaurant_id'});
//从你的api
db.banner.findAll({
其中:{
状态:“待定”
},
包括:[餐馆]//你又帮了我一次。=)谢谢Vivek@PathumSamararathna,我很高兴,谢谢你的夸奖。你能告诉我如何做到这一点吗