Сохранение Sequelize Query Text в базе данных - PullRequest
0 голосов
/ 11 марта 2020

У меня есть запрос sequelize, который я хотел бы сохранить в базе данных и затем выполнить по требованию . Для этого я сначала проверяю, как это будет работать в переменной в виде строки (потому что в базе данных она будет храниться в виде строки):

queryToRun = models.user.findAll({
  attributes: [
    ['name', 'name'],
    [Sequelize.literal("COUNT(DISTINCT(user.id))"), "user_count"]
  ],
  group: Sequelize.col("user.name")
})

В этом запросе я хотел бы использовать это так:

Promise.all(queryToRun);

Я успешно могу сохранить объект (объект, который идет внутрь findAll с атрибутами et c) в виде строки, а затем выполнить, но я не могу понять, Как сохранить каждую часть запроса. Я хочу сохранить фактическую строку "model.user.findAll()" и оценить ее позже.

Это важно, потому что я хочу определить модель, на которой мне нужно запустить findAll, и сохранить ее в базе данных.

1 Ответ

0 голосов
/ 11 марта 2020

Это на самом деле довольно просто

  1. Не используйте многострочную строку, по какой-то причине она отключает вызов функции
  2. Используйте eval для оценки строки

Пример:

let queryToRun = 'models.project.findAll({})';
Promise.all([eval(queryToRun)]);
...