Sequelize.js Sequalize how';as';和';外键';属性对关系有何影响?

Sequelize.js Sequalize how';as';和';外键';属性对关系有何影响?,sequelize.js,Sequelize.js,我在学Sequalize 我正在使用迁移机制开发系统。这意味着我使用迁移添加外键 我有两种型号,即横幅和餐厅 一家餐厅可以有许多横幅。 一条横幅属于一家餐厅 所以在我的餐厅模式中 restaurants.associate = function (models) { restaurants.hasMany(models.banners, { foreignKey: 'restaurant_id' }) } banners.associate = function

我在学Sequalize

我正在使用迁移机制开发系统。这意味着我使用迁移添加外键

我有两种型号,即
横幅
餐厅

一家餐厅可以有许多横幅。 一条横幅属于一家餐厅

所以在我的餐厅模式中

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,我很高兴,谢谢你的夸奖。你能告诉我如何做到这一点吗