मुझे नहीं पता कि आप अभी भी इसका उत्तर ढूंढ रहे हैं या नहीं, लेकिन यदि आप नेवले का उपयोग करते हैं तो आप सुविधा को पॉप्युलेट करें और इसे मिडलवेयर के रूप में उपयोग करें
यहां एक उदाहरण दिया गया है:मान लीजिए कि मुझे लोगों और उनके दोस्तों, और उनके दोस्तों-मित्रों आदि की सूची चाहिए। परिणाम इस तरह दिखना चाहिए:
[
{
_id: "abc123",
name: "John Doe",
friends: [
{
_id: "efg456",
name: "Foo bar",
friends: [
{
_id: "hij789",
name: "Jane Doe",
friends: [more friends...]
}
]
}
]
]
डीबी में वे इस तरह जमा होते हैं
{_id: "abc123", name: "John Doe", friends: ["efg456"]}
{_id: "efg456", name: "Foo bar", friends: ["hij789"]}
{_id: "hij789", name: "Jane Doe", friends: [more friends...]}
आपका स्कीमा और मिडलवेयर होगा:
const Person = new Schema<Folder>({
name: {type: String, required: true},
friends: [{type: Schema.Types.ObjectId, ref: "person"}],
}, {timestamps: true})
Person.pre("find", function(next) {
this.populate("friends")
next()
})
फ़ंक्शन को find
. में मिडलवेयर के रूप में जोड़ना पाए जाने वाले प्रत्येक व्यक्ति के लिए इसे चलाएगा। इसमें friends
. के बच्चे शामिल हैं सरणी।