Sequelize 查询由 $and 连接的 2 个函数
Sequelize querying 2 functions connected by $and
我正在尝试连接两个条件,但到目前为止我无法弄清楚语法:
models.trees.findOne({
where: {
state: {
[sequelize.Op.eq]: "Publish",
},
$and:
[sequelize.where(sequelize.fn("MONTH", sequelize.fn("CURRENT_DATE")), sequelize.fn("MONTH", sequelize.col("createdAt"))),
sequelize.where(sequelize.fn("YEAR", sequelize.fn("CURRENT_DATE")), sequelize.fn("YEAR", sequelize.col("createdAt")))],
userId: {
[sequelize.Op.eq]: id
},
},
attributes: [
[sequelize.fn("COUNT", sequelize.col("userId")), "count_trees"]
]
});
问题出在 $and 中的两个条件,只有后者适用,我尝试用 {} 括起不同的条件,但它抛出了语法错误。
知道如何将两个函数应用于过滤器吗?
谢谢
您可以使用 sequelize.and
将几个 sequelize.where
与这样的函数组合起来:
where: sequelize.and(
sequelize.where(sequelize.fn('date_part', 'year', sequelize.col('start_date)), '<=', year),
sequelize.or(
sequelize.where(sequelize.fn('date_part', 'year', sequelize.col('end_date')), '>=', year),
sequelize.where(sequelize.col('end_date'), 'is', null)
)
)
我正在尝试连接两个条件,但到目前为止我无法弄清楚语法:
models.trees.findOne({
where: {
state: {
[sequelize.Op.eq]: "Publish",
},
$and:
[sequelize.where(sequelize.fn("MONTH", sequelize.fn("CURRENT_DATE")), sequelize.fn("MONTH", sequelize.col("createdAt"))),
sequelize.where(sequelize.fn("YEAR", sequelize.fn("CURRENT_DATE")), sequelize.fn("YEAR", sequelize.col("createdAt")))],
userId: {
[sequelize.Op.eq]: id
},
},
attributes: [
[sequelize.fn("COUNT", sequelize.col("userId")), "count_trees"]
]
});
问题出在 $and 中的两个条件,只有后者适用,我尝试用 {} 括起不同的条件,但它抛出了语法错误。 知道如何将两个函数应用于过滤器吗?
谢谢
您可以使用 sequelize.and
将几个 sequelize.where
与这样的函数组合起来:
where: sequelize.and(
sequelize.where(sequelize.fn('date_part', 'year', sequelize.col('start_date)), '<=', year),
sequelize.or(
sequelize.where(sequelize.fn('date_part', 'year', sequelize.col('end_date')), '>=', year),
sequelize.where(sequelize.col('end_date'), 'is', null)
)
)