Как заполнить поле вложенного документа, который является элементом массива другого документа? - PullRequest
0 голосов
/ 11 ноября 2019
let collection = await Collection.findOne({ 'works._id': req.params.id }).populate('works.0.photo');

Этот код будет заполнять субдок work в индексе 0, однако я хочу, чтобы он заполнил индекс, соответствующий req.params.id.

Я хочу что-то вроде .populate('works.i.photo'), где i представляет индекс работы, который содержит _id, который соответствует req.params.id.


Я понял, как это сделать, но я уверен, что есть лучший способ.

let collection = await Collection.findOne({ 'works._id': req.params.id });
const idx = collection.works.findIndex(work => work._id == req.params.id);
collection = await collection.populate(`works.${idx}.photo`).execPopulate();

Это не похоже на предполагаемый способ сделать это. Можно ли сделать это без итерации, чтобы найти индекс? Желательно только с одним выполнением запроса.

...