Эй, ребята, я пытаюсь получить некоторые данные, используя mongoose
из MongoDB
.
это даже не заполнение первого уровня.
Я постараюсь объяснить ситуацию ниже.
У меня есть структура документов, как показано ниже:
Схема [s]
- UsersSchema
_id : { type: mongoose.Schema.Types.ObjectId },
userData : [{ type: mongoose.Schema.Types.ObjectId, ref: 'DataType' }],
- DataTypeSchema
_id : { type: mongoose.Schema.Types.ObjectId },
data : [{ type: mongoose.Schema.Types.ObjectId, ref:'Data' }],
- DataSchema
_id : { type: mongoose.Schema.Types.ObjectId },
desc: String
Заполнение данных:
- в User>
userData : ["dataTypeID" , "dataTypeID" ]
- в DataType>
data : ["dataID" , "dataID" ]
- в данных>
desc: "pending"
Проблема:
Я пытаюсь получить desc
поле Data
в моем User
документе.
Что я пробовал:
1 попытка
await User.find().populate('userData').lean();
Ответ
: должен заполнить модель DataType
. вместо этого я смотрю на [ [Object], [Object] ]
,
[{
_id: 5b37aa4638a07505e809191a,
userData: [ [Object], [Object] ],
__v: 0
}]
2 попытки
await User.find().populate('userData.data').lean();
Я пытался сделать что-то, что я не знаю, что он будет делать: D
ответ: и теперь он возвращает идентификаторы DataType
модели
[{
_id: 5b37aa4638a07505e809191a,
userData: [ 5b35577759407235a4293020, 5b355fb5f51a0c1de0a3ab3d ],
__v: 0
}]
3 попытки
затем после прочтения документации мангуста:
await User.find().populate({
path: 'userData',
model: 'User',
populate: {
path: 'data',
model: 'DataType',
}
}).lean();
ответ: полученный и пустой массив userData : []
[{
_id: 5b37aa4638a07505e809191a,
userData: [ ],
__v: 0
}]
note : если я удаляю model: 'User'
из первого заполнения, я получаю тот же ответ, что и .populate('userData') = [ [Object], [Object] ],
после поиска ответов в ответах, мне это нравится: mongoose-deep-populate для глубокого заполнения, которое также работает, так как обычное заполнение mongoose не дает никакого эффекта.
мне просто не имеет смысла, почему я не могу даже заполнить DataType
в User
: (
Я надеюсь, что кто-нибудь поможет мне в этой странной ситуации.
спасибо