У меня есть 3 модели схем Родитель , Дети и Игрушки . Для каждого родителя существует множество детей, а для каждого ребенка также может быть множество детей и игрушек. Как я буду заполнять массив Children до n-го уровня?
Родитель
const parentSchema = new Schema({
name: String,
description: String,
children: [{ type: Schema.Types.ObjectId, ref: 'Children' }]
}, {
collection: 'parent'
})
module.exports = Model('Parent', parentSchema)
Дети
const childrenSchema= new Schema({
ancestor: { type: Schema.Types.ObjectId, ref: 'Parent' },
parent: { type: Schema.Types.ObjectId, ref: 'Children' },
name: String,
toys: [
{ type: Schema.Types.ObjectId, ref: 'Toys' }
],
children: [
{ type: Schema.Types.ObjectId, ref: 'Children' }
]
}, {
collection: 'children'
})
module.exports = Model('Children', childrenSchema)
Игрушки
const toysSchema= new Schema({
name: String,
description: String,
}, {
collection: 'toys'
})
module.exports = Model('Toys', toysSchema)
Образец результата
{
"_id": "123456",
"name": "Parent Name",
"description": "Some Description",
"children": [
{
"_id": "qwerty"
"ancestor": "123456",
"parent": "",
"name": "children_level_1",
"toys": [],
"children": [
{
"_id": "asdfg"
"ancestor": "123456",
"parent": "qwerty",
"name": "children_level_2A",
"toys": [
{
"_id": "1aj2k5h"
"name": "toy_1",
"description": "Toy"
}
],
"children": [
{
"_id": "zxcvb"
"ancestor": "123456",
"parent": "asdfg",
"name": "children_level_2",
"toys": [],
"children": []
}
]
},
{
"_id": "yuiop"
"ancestor": "123456",
"parent": "qwerty",
"name": "children_level_2B",
"toys": [],
"children": []
}
]
}
]
}
Есть ли способ заселить детей и игрушки до n-го уровня? сейчас я просто использую жестко запрограммированное заполнение, но оно неэффективно, когда уровень вложенного массива идет глубже. Я думаю, есть ли какое-то решение, кроме рекурсивного или глубокого заполнения? Я не очень знаком с манипуляциями на мангусте, и я также пробовал несколько решений из Интернета, но ни одно из них не решило мою проблему.