#node.js #sequelize.js
#node.js #sequelize.js
Вопрос:
В настоящее время я пытаюсь создать запрос 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 с null, что противоречит цели запроса.
Ниже приведен необработанный запрос 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
Комментарии:
1. Пожалуйста, используйте что-то вроде sqlformat.org для форматирования ваших SQL-запросов.
2. @Anatoly, я бы посмотрел на это, спасибо
Ответ №1:
sequelize.where
использует 3 параметра, и если вы опустите 2 последних, они будут ‘=’ и ‘null’ соответственно. Вы должны сделать что-то вроде этого:
sequelize.where(sequelize.literal('"Message"."status"'), '=', 'read')