Как динамически связывать методы в JavaScript - PullRequest
1 голос
/ 05 августа 2020

Я хочу заполнить различные пути документа с помощью Mon goose, но я не могу найти способ динамически связать различные методы заполнения. Для повышения производительности важно получить все эти поля в одном go. Вот код:

let fields = [path1, path2, ...]

let result = document.findById(id).populate(path1).populate(path2).populate(...)

Кто-нибудь из вас знает о таком колдовстве?

Ответы [ 2 ]

2 голосов
/ 05 августа 2020
const result = fields.reduce((r, path) => r.populate(path), document.findById(id));

Или более подробно:

let result = document.findById(id);
for (let i = 0; i < fields.length; i++) {
    result = result.populate(fields[i]);
}
1 голос
/ 05 августа 2020

Я не уверен, что вы ищете:

let query = document.findById(id)

for (const field of fields) {
  query = query.populate(field)
}

const result = await query

, если вы хотите go с ES6 .reduce () :

const result = await fields.reduce((query, field) => query.populate(field), document.findById(id))

Редактировать :

Из mon goose v3.6 вы также можете использовать .populate(fields.join(' '))

...