Как создать запрос, не привязанный к модели - PullRequest
0 голосов
/ 02 января 2019

Strapi использует книжную полку (или Mongoose) для управления моделью сущностей, которыми он управляет.Это довольно удобно и полезно при запросе данных в этих моделях.

Моя проблема возникает, когда я пытаюсь выполнить запрос, который является агрегацией.Представьте себе, если бы у вас была модель Todo с двумя полями: name и done, вы могли бы легко получить список Todo s, выполнив (в services/Todo.js):

Todo.query().fetchAll()

Но я хочу подсчитать, сколько дел сделано, а что нет.По сути, я хочу выполнить: SELECT done, count(*) as howMany FROM todo GROUP BY done

Я могу создать запрос, и он выполняет его ... но он не выполняется, потому что он пытается использовать результаты запроса для гидратации объекта Todo и егожалуется, что нет name.

Итак, вот в чем вопрос: предоставляет ли strapi возможность запроса "общего назначения", которую я могу использовать для выполнения запросов с отсоединением от модели?

I 'Я хотел бы иметь возможность использовать те же соединения с БД, которые использует strapi.

1 Ответ

0 голосов
/ 02 января 2019

Это не интуитивно понятно, и в документации не ясно об этом.Но вы можете получить доступ к экземплярам mongoose и knex в strapi.connections.default.

Надеюсь, это поможет.


Примером использования может быть:

const knexQueryBuilder = strapi.connections.default('mytable');
knexQueryBuilder.where('myfield','=','myvalue');
const resp = await knexQueryBuilder.then();
console.log('Results: ', resp);
...