![](/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.