gpt4 book ai didi

javascript - Sequelize BeingsToMany 通过查询目标模型来获取源模型

转载 作者:行者123 更新时间:2023-12-03 22:41:02 26 4
gpt4 key购买 nike

我有两个模型品牌和运动。

一个品牌可以有多个广告系列

export default(sequelize, DataTypes)=> {
const Brand = sequelize.define('Brand', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
})

Brand.associate = models=> {
Brand.belongsToMany(models.Campaign, {
through: models.CampaignBrand,
foreignKey: 'brand',
})
}

return Brand
}

一个事件也可以有多个品牌
export default(sequelize, DataTypes)=> {
const Campaign = sequelize.define('Campaign', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
})

Campaign.associate = models=> {
Campaign.belongsToMany(models.Brand, {
through: models.CampaignBrand,
foreignKey: 'campaign',
})
}

return Campaign
}

这是通过模型:
export default(sequelize, DataTypes)=> {
const CampaignBrand = sequelize.define('CampaignBrand', {
// see enums
status: {
type: DataTypes.INTEGER,
allowNull: false,
},
roleText: {
type: DataTypes.STRING,
},
})

CampaignBrand.associate = models=> {
CampaignBrand.belongsTo(models.Campaign, {
foreignKey: 'campaign',
targetKey: 'id',
onDelete: 'CASCADE',
})
}

return CampaignBrand
}

如果我想 通过 品牌 获取广告系列 。我应该怎么办?
我试过查询喜欢提到的文档,但它对我不起作用

With Belongs-To-Many you can query based on through relation and select specific attributes. For example using findAll with through

User.findAll({ include: [{ model: Project, through: { attributes: ['createdAt', 'startedAt', 'finishedAt'], where: {completed: true} } }] });



我找到了一些解决方法,但这不是我想要的:

解决方案 1:

BeingsToMany Brand 更新为 hasMany CampaignBrand 和 CampaignBrand.brand 的查询

解决方案 2:

通过查询品牌获取广告系列

还有其他建议吗?

方言: postgres

数据库版本: 9.4

Sequelize 版本: 4.2.1

最佳答案

我认为您在 through 模型中不需要这种关联:
CampaignBrand.associate = models=> {
CampaignBrand.belongsTo(models.Campaign, {
foreignKey: 'campaign',
targetKey: 'id',
onDelete: 'CASCADE',
})
}

您已经在 Brand 和 Campaign 的定义中拥有belongsToMany 关联,因此我认为您只需要使用 status 和 roleText 属性创建 CampaignBrand 模型即可。

据我了解,然后您可以通过广告系列查询品牌,它应该返回每个品牌元素及其关联的广告系列,
Brand.findAll({
include: [{
model: Campaign
}]
});

关于javascript - Sequelize BeingsToMany 通过查询目标模型来获取源模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45953402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com