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)
  )
)