Если я использую Populate (mon goose) с пустой строкой, что произойдет? Я хочу создать абстрактную функцию для получения данных из Мангуста - PullRequest
1 голос
/ 11 марта 2020

Я хочу создать абстрактную функцию для получения всех коллекций с mon goose, и она будет получать или не получать параметры для использования в методе заполнения. Итак, у меня есть этот код сейчас:

async function getCollection(model, relatedFields) {   
 if (!relatedFields) relatedFields = [];  
    try {
      const collection = await model.find()
        .populate(relatedFields[0] ? relatedFields[0] : '')
        .populate(relatedFields[1] ? relatedFields[1] : '')
        .populate(relatedFields[2] ? relatedFields[2] : '');
      return collection;
    } catch (err) {
      throw err;
    }
 }

Это работает, но я боюсь этого повторного метода заполнения. Этот метод делает что-то даже без параметров?

Есть ли способ сделать это умнее? Спасибо! :)

1 Ответ

1 голос
/ 11 марта 2020

Вы можете попытаться построить свой запрос динамически, а затем выполнить.

async function getCollection(Model, relatedFields = []) {
  try {
    let query = Model.find();

    for (let relatedField of relatedFields) {
      if (relatedField) {
        query = query.populate(relatedField);
      }
    }

    const docs = await query();
    return docs;
  } catch (err) {
    throw err;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...