Tôi không biết liệu bạn có còn đang tìm câu trả lời cho điều này hay không, nhưng nếu bạn sử dụng mongoose, bạn có thể tận dụng điền tính năng và sử dụng nó làm phần mềm trung gian
Đây là một ví dụ:Giả sử tôi muốn có một danh sách gồm những người và bạn bè của họ, bạn bè của họ, v.v. Kết quả sẽ như thế này:
[
{
_id: "abc123",
name: "John Doe",
friends: [
{
_id: "efg456",
name: "Foo bar",
friends: [
{
_id: "hij789",
name: "Jane Doe",
friends: [more friends...]
}
]
}
]
]
Trong db chúng được lưu trữ như thế này
{_id: "abc123", name: "John Doe", friends: ["efg456"]}
{_id: "efg456", name: "Foo bar", friends: ["hij789"]}
{_id: "hij789", name: "Jane Doe", friends: [more friends...]}
Lược đồ và phần mềm trung gian của bạn sẽ là:
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()
})
Thêm chức năng làm phần mềm trung gian vào find
sẽ làm cho nó chạy cho mọi người được tìm thấy. Điều đó bao gồm những đứa trẻ trong friends
mảng.