Как выполнять необработанные монго-запросы в Loopback 4 - PullRequest
0 голосов
/ 07 июня 2019

Я оцениваю принятие Loopback4 для нового проекта.Я изучил учебник и документацию, и я должен сделать некоторые тесты.Один из них связан с возможностями выполнения собственных запросов mongodb.

Я нашел много примеров, связанных с Loopback v3, но поскольку структура сильно отличается (по сравнению с Lb4), они ненадежны.Конечно, я хотел бы сохранить разделение между моделью / хранилищем / источником данных, как это было разработано Lb4, и я хотел бы сохранить типизацию.Кто-нибудь так же пытался сделать то же самое?Каждая помощь будет оценена Спасибо большое

1 Ответ

0 голосов
/ 17 июня 2019

Боюсь, LoopBack 4 не имеет простого в использовании API для выполнения необработанных запросов MongoDB.Мы обсуждаем эту функцию в выпуске GitHub # 2807 .

Пока мы не реализуем первоклассную поддержку, вы можете напрямую вызывать метод execute коннектора MongoDB следующим образом:

const repo = // obtain the repository instance, e.g. via @inject()
const result = await new Promise((resolve, reject) => {
  repo.dataSource.connector.execute(
    'LoanRequestMappings', // collection name
    'aggregate', // command to execute
    // additional arguments
    [
      {
          $lookup:{
              // ...
          }
      },
      {   $unwind:"$data" },
      {
          $match:{
              // ...
          }
      },
      {
          $lookup:{
              // ... 
          }
      },
      {   $unwind:"$LoanRepayment" },
      { $project : { _id: 0} },
      { $out : "tempData" }
  ],
  (err, data) => {
    if (err) reject(err);
    else resolve(data);
  });
});
...