node.js - 我如何在 sequelizejs 中使用这个完整的查询

标签 node.js sequelize.js

我想将此代码转换为 Sequelize 。

where ADDTIME(deleted_at, TIMEDIFF(deleted_at, end_at) * 2) > NOW() OR (end_at < NOW() AND deleted_at is null);

我在下面的 Sequelize 文档中找到了。但这对我的查询来说还不够。
Post.findAll({
    where: sequelize.where(sequelize.fn('char_length', 
    sequelize.col('status')), 6)
});

我想将此代码转换为 Sequelize 。
where ADDTIME(deleted_at, TIMEDIFF(deleted_at, end_at) * 2) > NOW() OR (end_at < NOW() AND deleted_at is null);

像这样。我不想使用 RAW 查询

最佳答案

这个子句大部分用Sequelize表达很简单,如下图:

where : {
     [Op.or] : [
          // 1
          Sequelize.where(
                Sequelize.fn('ADDTIME', 
                    Sequelize.col('deleted_at'), 
                    Sequelize.literal('TIMEDIFF(deleted_at, end_at) * 2')),
                {[Op.gt] : Sequelize.fn('NOW')}
          ),
          // 2
          {
                 end_at      : { [Op.lt]: Sequelize.fn('NOW') },
                 deleted_at  : null
          }
     ]
}

唯一的重点是乘法 - 不确定如何/是否有办法在没有文字的情况下做到这一点......

HTH

关于node.js - 我如何在 sequelizejs 中使用这个完整的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57049485/

相关文章:

node.js - Sequelize 原始查询未正确打印

node.js - Autodesk Forge API a-401 错误

javascript - Node.js:events.EventEmitter.call(this)与Obj.prototype.__proto__ = events.EventEmitter.prototype的关系;

variables - 在 Node.js 中,为什么我应该更喜欢键值存储而不是应用程序变量?

mysql - 是否没有选项可以在 sequelize 模型中映射列名

mysql - 从 Moleculer Framework 中的 mysql 数据库中的 find 方法获取选择字段

typescript - Sequelize V6 typescript : get data as plain object with findall

sockets - node.js 的 "net"包中的 TCP socket.write 函数未写入套接字

javascript - 在node js中获取空数组

node.js - 使用关联元数据对插入数据进行序列化