gpt4 book ai didi

node.js - 序列化查询特定的belongsToMany关联

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:16 25 4
gpt4 key购买 nike

我有一个包含两个表的 Sequelize 设置:FooBar。它们彼此之间都有一个 ownToMany 关联。

Foo.belongsToMany(Bar, {through: 'foo_bars'});
Bar.belongsToMany(Foo, {through: 'foo_bars'});

现在,我有一些与许多酒吧相关的 foo。但我有一些特定的栏,我想找到与所有这些栏相关的所有 foo,但仅限于这些栏。

bars = [wineBar, beerBar];
const wineAndBeerBarFoo = await Foo.findAll({
where: {
// ?
},
include: [{
model: Bar,
where: {
// id: {[Sequelize.Op.all]: [wineBar.id, beerBar.id]}
}
}]
});

我尝试了一些变体,但我在 include block 的 where 中注释的内容显然是不正确的,因为它将查找与 ID 为啤酒和酒吧 ID 数组的酒吧关联的 foo,这是不可能的。

我并没有真正找到一种方法来完成我在文档中寻找的内容。我总是可以手动浏览 FooBars 表,但想知道是否有更惯用的方法来执行此操作。谢谢!

最佳答案

您应该将 where 子句放置到 through 对象中。我尝试将您的条件与 Op.all 一起使用,但我得到了 SequelizeDatabaseError:格式错误的数组文字,所以也许 all 条件在我的版本中被破坏了(我使用 sequelize 5.8.5)。也许尝试一些不同的查询方法(Op.and 也许)。但基本原理是这样的:

const wineAndBeerBarFoo = await Foo.findAll({
include: [{
model: Bar,
required: true,
through: {
where: {
BarId: {[Sequelize.Op.eq]: wineBar.id }
}
}
}
]
});

关于node.js - 序列化查询特定的belongsToMany关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080740/

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