После некоторых исследований, пытаясь ответить на другой вопрос здесь о переполнении стека ( mon goose: заполнить в mon goose, у которого нет ObjectId ), я понял, как это работает!
Рассмотрим часть представленного кода:
BandSchema.virtual("members", {
ref: "Person", // The model to use
localField: "name", // Find people where `localField`
foreignField: "band", // this field here has to match the ref path we want to populate!
justOne: false,
});
Итак, хитрость заключается в том, чтобы убедиться, что foreignField
соответствует полю в модели ref
, а localField
- это имя поле, которое вы можете найти в заполненной модели: у нас должно быть совпадение между foreignField
и localField
, точнее: значение localField
должно совпадать со значением foreignField
в реальной ситуации в базе данных , не в процессе именования схемы. Вот как mon goose может найти и заполнить!
Теперь я понимаю, что мне было трудно, что Virtual
работает как-то в направлении, противоположном populate
. Вы можете заполнить картинку, работая в виде дерева: она просто заполняется от id
до документа, тогда как virtual
заполняет документ, который не содержит ключа, тот, который содержит ключ, - тот, который будет добавлен в документ. процесс заселения: он как-то отсталый, то есть мне было так трудно gr asp! Заполняемый документ не имеет только что заполненного поля! это сногсшибательно!
Заключение и заключительные замечания
Тем не менее, я все еще считаю его ограниченным по сравнению с populate
. Вы по-прежнему должны хранить локальные ключевые треки, что, например, не решает проблему памяти истории, и, по моим исследованиям, она более ограничена. Единственное преимущество, которое я вижу, это то, что вам не нужно использовать _id
, вы можете использовать любой ключ, какой пожелаете. Я надеялся использовать для решения моей проблемы здесь Как сохранить файл JSON с помощью GridFs , но, поскольку нам все еще нужно хранить локальные ключи, я попал в ту же ловушку!
Исправление
Я рад сообщить, что я ошибался! Виртуалы потрясающие! и решает мой вопрос на Как сохранить файл JSON с помощью GridFs , я собираюсь обновить там!