node.js - 自定义查询的不一致的 Sequelize 查询构造

标签 node.js sequelize.js

我目前正在尝试在我的 Node 应用程序中构建一个 Sequelize 查询,如下所示;

import sequelize from 'sequelize';

function getReadMsg(){
  const where = [sequelize.where(
    sequelize.literal('"Message"."status" = \'read\'') 
  )];

  const attributes = { exclude: ['updated_at'] };

  const order = [['created_at', 'ASC']];

  return model.findAll({ where, attributes, order }); // model is a sequelize model object
}
但是,Sequelize 构造的原始查询正在比较
其中 块为空,因此违背了查询的目的。
下面是原始的 Sequelize 构造查询;
SELECT "id", "title", "body", "to", "from", "status", "created_at" FROM "Messages" AS "Message" WHERE ("Message"."status" = 'read' IS NULL) ORDER BY "Message"."created_at" ASC;
代替;
SELECT "id", "title", "body", "to", "from", "status", "created_at" FROM "Messages" AS "Message" WHERE ("Message"."status" = 'read') ORDER BY "Message"."created_at" ASC;
压缩版本:5.21.4。
squelize-cli 版本:5.5.1。
Node 版本:12.16.1

最佳答案

sequelize.where 使用 3 个参数,如果省略最后两个参数,它们将分别为 '=' 和 'null'。
你应该做这样的事情:

sequelize.where(sequelize.literal('"Message"."status"'), '=', 'read')

关于node.js - 自定义查询的不一致的 Sequelize 查询构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64610911/

相关文章:

mysql - NodeJS - Sequelize 更新问题

javascript - 使用 system.js 导入 socket.io

node.js - JSON - 发送后无法发送 header

ruby-on-rails - 有没有一种简单的方法可以在 Rails 和 Node.js 应用程序之间共享存储在 Redis 中的 session 数据?

javascript - 使用 socket node.js 检测用户切换页面

mysql - 在同一列中进行多次搜索 MySQL Sequelize,

javascript - 如何修复使用 Sequelize Node Express Mysql 插入数据库的问题?

node.js - 对同一数据库的多个实例使用 sequelize

javascript - 从 Express API 返回的 JSON 对象带有引号 - 为什么?以及如何解决?

node.js - Sequelize 5 : TypeError on many-to-many methods