У меня есть следующая схема:
const Person= new Schema({
father: {
type: Schema.Types.ObjectId,
ref: "Person"
},
childs: [{
type: Schema.Types.ObjectId,
ref: "Person"
}]
})
module.exports = mongoose.model("Person", Person)
Следующий шаг популярен. Я делаю это с пред find
.
Person.pre('find', function(next){
this.populate('father')
this.populate('childs')
return next()
}
Проблема возникает, когда у меня есть ребенок, указывающий на отца, и отец, указывающий на ребенка. Это вызывает круговую зависимость. Я пытался исключить некоторые поля в child таким образом this.populate('childs', '-father -childs')
, но он все еще не работает.
Как я могу предотвратить такое глубокое заполнение?
В настоящее время я решаю проблему с помощью пользовательского интерфейса. Это со следующей процедурой:
Любая попытка воспроизвести эту функцию, но на сервере
express
, заканчивается бесконечным циклом.
DespuГ©s осведомления немного, я думаю, что она soluciГіn ты можешь получать ее в этапе $graphLookup
из aggregate
, которые ищут с перекурсивной формы до travГ©s одной colecciГіn.
Для твоего случая, tendrГ - в который консультация следующей формы осуществляться:
db.collection.aggregate([
{ $match: { } }, // Filtra por los campos que necesites
{
$graphLookup: {
from: 'person', // Colección ha relacionar
startWith: '$father', // Empieza a buscar sobre esta propiedad
connectFromField: 'child', // Campo a relacionar con 'connectToField'
connectToField: '_id',
maxDepth: 1, // El numero de recursividad que quieres.
as: 'data', // El campo donde se almacenara la información
}
}
])
после того, как смог показывать число глубины / возврата, ты не прибудешь в бесконечный цикл, который происходит с тобой.
переместил Тебя пару соединений, которые помогли мне понимать $graphLookup
, который знал, что existГ - в, но никогда он не вышел у меня она ocasiГіn использования ее, и я думаю, что это хороший случай для этого.
Хороший пример, чтобы понимать $graphLookup
Даже asГ, - если не смогло помогать тебе это, я жду, что ты какой-то идеи, чтобы это решать.
Приветствие