gpt4 book ai didi

javascript - 在 where 子句中续写 : use field created in sequelize. 文字

转载 作者:行者123 更新时间:2023-12-03 22:32:04 24 4
gpt4 key购买 nike

我正在使用 sequelize .literal 函数来创建一个聚合字段,这是其他方式无法实现的。现在我想使用 sequelize 的内置“where”子句来过滤这个新字段的值。

DB_A.findAll({
attributes: {
include: [
[
sequelize.literal(
`(SELECT COUNT (*) FROM DB_B as DB_B WHERE DB_B.a_id = DB_A.id)`
),
"b_count",
],

]}
where:{ b_count:{[Op.gte]:10}}
})
当我这样做时,我在'where子句'中得到“未知列'DB_A.b_count'”。我也试过:
where:{[sequelize.literal("b_count")]:...}
它适用于 sequelize 的 order 属性,但不适用于此处。
有任何想法吗?

最佳答案

好的,我想通了。您需要使用“拥有”而不是“在哪里”,因为这是常规 MySQL 的方式。出于某种原因,Sequelize.having 不在 DOCS/API 上,我已经在 git repo 上打开了一个问题。
上面的代码将是:

DB_A.findAll({
attributes: {
include: [
[
sequelize.literal(
`(SELECT COUNT (*) FROM DB_B as DB_B WHERE DB_B.a_id = DB_A.id)`
),
"b_count",
],

]}
having:{ ["b_count"]:{[Op.gte]:10}}
})

关于javascript - 在 where 子句中续写 : use field created in sequelize. 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66049510/

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