Jag vet inte om du fortfarande letar efter svaret på detta, men om du använder mongoose kan du dra nytta av fyllningsfunktionen och använd den som mellanprogram
Här är ett exempel:Låt oss säga att jag vill ha en lista över personer och deras vänner, och deras vänner-vänner, etc. Resultatet bör se ut så här:
[
{
_id: "abc123",
name: "John Doe",
friends: [
{
_id: "efg456",
name: "Foo bar",
friends: [
{
_id: "hij789",
name: "Jane Doe",
friends: [more friends...]
}
]
}
]
]
I db:n lagras de så här
{_id: "abc123", name: "John Doe", friends: ["efg456"]}
{_id: "efg456", name: "Foo bar", friends: ["hij789"]}
{_id: "hij789", name: "Jane Doe", friends: [more friends...]}
Ditt schema och mellanprogram skulle vara:
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()
})
Lägger till funktionen som mellanprogram för att find
kommer att få den att köras för varje person som hittas. Det inkluderar barnen i friends
array.