Я создаю систему заказов, в которой есть пользователи с несколькими ролями. Каждый пользователь имеет несколько связанных заказов. Каждый заказ имеет вложенный объект с именем «Peeps», который имеет 3 свойства: Клиент, Доставка, Логистика.
Я пытаюсь заполнить модель User, и я нашел способ заполнить пользователей в объекте Orders Peeps (см. Схему ниже), но это довольно громоздко, поскольку требует нескольких вызовов наполнения, и мне было интересно, есть ли лучший путь.
Я тоже не совсем уверен насчет Схемы, но я просто пробую что-то и наткнулся на этот маленький кусочек проблемы.
1007 * Schemas *
const UserSchema = Schema({
Name: {
type: String,
default: "John Doe"
},
Password: {
type: String,
default: "password"
},
Email: {
type: String,
unique: true
},
Phone: {
type: String,
unique: true
},
Orders: [{
type: Schema.Types.ObjectId,
ref: "orders"
}]
});
const OrderSchema = Schema({
Peeps: {
Client: {
type: Schema.Types.ObjectId,
ref: "users"
},
Logistics: {
type: Schema.Types.ObjectId,
ref: "users"
},
Delivery: {
type: Schema.Types.ObjectId,
ref: "users"
},
},
LocationUpdates: [{
type: LocationUpdateSchema,
ref: "locationupdates"
}]
});
Код запроса, который заполняет данные (работает, но это не так)
const query = await Users.findOne({ Email: "john.doe@gmail.com" })
.populate({
path: "Orders",
populate: {
path: "Persons.Client"
}
})
.populate({
path: "Orders",
populate: {
path: "Persons.Delivery"
}
})
.populate({
path: "Orders",
populate: {
path: "Persons.Logistics"
}
});