【问题标题】:Sequlize get associate table dataSequelize 获取关联表数据
【发布时间】:2020-03-01 19:57:03
【问题描述】:
I am using Sequlize PostgreSQL. I have some table below

Campaigna( id, title )

BPCampaigna( id,  user_id(forignkey), campaign_Id(forigen_key) )

Usera( id, name, conatct )

我正在尝试获取包含所有 bp 的所有广告系列以及每个 bp 的详细信息,例如

{
    id: 1,
    title: 'campaign title',
    bp:{
       id: 1,
       name: 'Bp'
       conatct: '454545
    }

}

我曾尝试查找包含 BPCampaign 的广告系列,然后它工作正常,但当尝试查找包含 Bpcampaign 的广告系列时,用户会出现错误。

 Campaign.findAll({
        where: {
            deleted: 0
        },
        include: [
        {
            model: relatedModel,
            include: [User]
        }
    ]
    })

错误:users is not associated to bp_campaigns!

【问题讨论】:

标签: node.js express sequelize.js


【解决方案1】:

您没有为 BpCampaign 定义关联

BpCampaign.belongsTo(user, { foreignKey: 'aquisition_member_id' });

【讨论】:

  • 错误:bp_campaigns.belongsTo 调用的东西不是 Sequelize.Model 的子类。现在显示此错误。需要迁移吗?
  • 只需创建一个新的js文件associations.js并将所有模型导入其中。然后将所有关联移入其中,包括 BpCampaign.belongsTo。您应该指向创建的用户模型对象,而不是用户。
  • 我需要在哪里添加association.js文件?
  • 创建模型和导入模型的位置相同,例如 const bp_campaign = require('./BpCampaign')
  • const User = require('../models/User') const Campaign = require('../models/Campaign') const BPCampaign = require('../models/BpCampaign') Campaign.hasMany(BPCampaign, { foreignKey: 'campaign_id' }, {onDelete: 'CASCADE'}); User.hasMany(BPCampaign, { foreignKey: 'aquisition_member_id' }, {onDelete: 'CASCADE'}); BpCampaign.belongsTo(User, { foreignKey: 'aquisition_member_id' });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2023-03-08
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多