Я новичок в MongoDB и Mongoose, и я безуспешно пытаюсь заполнить вложенный массив.
У пользователей есть реквизит под названием «процедуры», который представляет собой массив объектов. Каждый элемент в этом массиве содержит некоторые реквизиты, в том числе и массив под названием «формы».
procedure[i].forms содержит ссылки на все формы в коллекции форм для разбирательства.
В «процедурах» нечего заполнять, кроме «форм». Я пытаюсь заполнить вложенный массив форм для каждого процесса.
So:
User: {
_id: ObjectId,
proceedings: [
{
_id: ObjectId,
forms: [
ObjectId,
ObjectId,
ObjectId
]
},
{
_id: ObjectId,
forms: [
ObjectId,
ObjectId,
ObjectId
]
}
]
}
Схемы:
const formSchema = new Schema({
userId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
values: { type: mongoose.Schema.Types.Mixed }
}, { timestamps: true });
const proceedingsSchema = new Schema({
initial_questions: {},
forms: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Form'
}
]
});
const userSchema = new Schema({
email: {
type: String,
default: '',
unique: true
},
password: {
type: String,
default: ''
},
sign_up_date: {
type: Object,
default: moment(),
get: parseDate
},
proceedings: [proceedingsSchema]
}, { timestamps: true });
userSchema.set('toObject', { getters: true });
userSchema.set('toJSON', { getters: true });
export const User = mongoose.model('Users', userSchema);
export const Form = mongoose.model('Forms', formSchema);
Запрос:
User.findOne({ _id: id })
.populate({
path: 'proceedings',
populate: {
path: 'forms',
model: 'Form'
}
})
.exec((err, user) => {
console.log(user.proceedings[0].forms)
})
Результатом является массив ObjectId вместо заполненных форм на их месте.
Любая помощь очень ценится.
Мангуст - v5.0.1