自定义查询的不一致 Sequelize 查询构造
Inconsistent Sequelize query construct for custom query
我目前正尝试在我的节点应用程序中构建一个 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 构造的原始查询正在比较
where 块为空,因此破坏了查询的目的。
下面是原始的 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;
squelize 版本:5.21.4.
squelize-cli 版本:5.5.1.
节点版本:12.16.1
sequelize.where
使用 3 个参数,如果省略最后两个参数,它们将分别为 '=' 和 'null'。
你应该这样做:
sequelize.where(sequelize.literal('"Message"."status"'), '=', 'read')
我目前正尝试在我的节点应用程序中构建一个 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 构造的原始查询正在比较 where 块为空,因此破坏了查询的目的。
下面是原始的 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;
squelize 版本:5.21.4.
squelize-cli 版本:5.5.1.
节点版本:12.16.1
sequelize.where
使用 3 个参数,如果省略最后两个参数,它们将分别为 '=' 和 'null'。
你应该这样做:
sequelize.where(sequelize.literal('"Message"."status"'), '=', 'read')