#node.js #mongodb #mongoose
Вопрос:
У меня есть схема модели, называемая схемой темы, которая содержит поле с именем parent, это ссылка на одну и ту же сущность «тема», в некоторых случаях это создает несколько уровней родства, поэтому мне нужно сделать запрос, который считывает идентификатор родителя, включенный в идентификатор родителя определенной темы. Я знаю, что это может показаться сложным, но это так же просто, как запрос с фильтром «родитель.родитель». Это модель и запрос, который я хочу сделать, но я не получаю ожидаемого результата:
const topicSchema = new Schema
(
{
name:
{
type:String,
unique:true
},
description:
{
type:String
},
parent:
{
type: Schema.ObjectId,
ref:'Topic'
}
}
)
async function getAllTopicChildren(topic)
{
const topicChildren = await Topic.find( {
$or:
[
{parent:topic},
{'parent.parent':topic},
{'parent.parent.parent':topic},
{'parent.parent.parent.parent':topic},
]
}).populate({path:'parent',populate:{path:'parent'}})
try
{
if(!topicChildren)
{
throw new Error('there are no topics')
}
else
{
return topicChildren
}
}
catch (error)
{
throw new Error(error.message)
}
}