![](/img/trans.png)
[英]Why I got “sequelize.literal is not a function” in Sequelize
[英]Sequelize: use field created in sequelize.literal in where clause
我正在使用 sequelize.literal function 创建一个聚合字段,这是其他方式无法实现的。 现在我想使用 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 属性,但不适用于此处。
有任何想法吗?
好的,我想通了。 您需要使用“have”而不是“where”,因为这将是使用常规 MySQL 的方式。 由于某种原因, Sequelize.having
不在 DOCS/API 上,我已经在 git 存储库中打开了一个问题。
上面的代码将是:
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}}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.