Sequelize fn не работает там, где условие - PullRequest
0 голосов
/ 19 июня 2020

Привет, я пробую следующий код:

let result = await models.booking.findAll({
  attributes: [
    'id'
  ],
  where: {
    [Op.and]: [
      sequelize.where(sequelize.fn('TIMESTAMPDIFF', sequelize.literal('HOUR'), sequelize.fn("NOW"), sequelize.col('createdAt')), {
        [Op.gte]: 1
      }),
      {
        createdAt: {
          [Op.eq]: sequelize.col('updatedAt')
        }
      }
    ]
  }
})

Это выполняет следующий запрос

SELECT `id` FROM `bookings` AS `booking` WHERE 
(`booking`.`deletedAt` IS NULL AND (TIMESTAMPDIFF(HOUR, NOW(), `createdAt`) >= 1 AND `booking`.`createdAt` = `updatedAt`)); 

, который вернул пустой массив (результат) в то время как в db отлично вернулся строк.

Решение:

 where: {
    createdAt: {[Op.eq]: sequelize.col('updatedAt')},
    [Op.and]: sequelize.where(sequelize.fn('TIMESTAMPDIFF',sequelize.literal('HOUR'), sequelize.col('createdAt'),  sequelize.fn("NOW")), {[Op.gte]: 1})
   }
...