Я использовал статью this как ссылку, но, наверное, я что-то прикрутил.Как глубоко заселить на мангусте
Я хочу глубоко заполнить модель Корзина:
var CartSchema = new Schema({
products: [{
product: { type: Schema.ObjectId, ref : 'Product' },
quantity: { type: Number, default: 1}
}],
totalItems: { type: Number, default: 0},
message: { type: String },
client: { type : Schema.ObjectId, ref : 'User' },
time: { type: Date, default: new Date()},
session: { type: String }
});
Так я получаю product.addons и product.description.item
var ProductSchema = new Schema({
name: { type: String, default: '' },
inventory: { type: Number },
type: { type: String, default: 'cesta' },
price: { type: Number, required: true },
discount: { type: Number},
description: [{
item: { type : Schema.ObjectId, ref : 'Item' },
quantity: Number
}],
photos: {
photo1: String,
photo2: String
},
related_products: [{ type : Schema.ObjectId, ref : 'Product' }],
addons: [{ type : Schema.ObjectId, ref : 'Product' }],
category: { type: Schema.ObjectId, ref: 'Category' },
code: { type: String },
descricao_avulsa: String,
slug: String
});
Я попытался это, но это, кажется, идет на каком-то вечном цикле (это не console.log:
var populate = {
path: "products.product",
model: 'Product',
populate: [
{ path: "price name photos slug" },
{ path: "description.item addons", model: 'Item'}
]
};
Cart.findOne({session: req.cookies['express:sess']})
.populate(populate)
.exec(function(err, cart){
if(err){
return err; }
console.log(cart.products[0].product);
next();
});
Я также попытался один и тот же код, с этим для populat e variable:
var populate = [
{ path: "products.product", select: "price name photos slug description addons" },
{ path: "products.product.description.item", select: "name" },
{ path: "products.product.addons", select: "name" }
];
Но это не дает мне результатов, которые я хочу.
Я хочу, чтобы мой результат, чтобы выглядеть примерно так:
{
_id: 5859790cc307556218b9d2e1,
slug: 'nova-cestinha',
price: 14300,
addons: [ { name: 'produto' } ],
photos: {
photo1: 'https://frutacor.s3.amazonaws.com/1482258691162',
photo2: 'https://frutacor.s3.amazonaws.com/1482258691189'
},
description:
[ {
item: {name: 'casadinho'},
quantity: 4,
_id: 5859790cc307556218b9d2e4
},
{
item: {name: 'brownie},
quantity: 5,
_id: 5859790cc307556218b9d2e3 }
],
name: 'nova cestinha'
}
Это работало для аддонов. Я попытаюсь выяснить описание.item, спасибо за помощь – iagowp
Должно быть, это сработало для обоих, я не знаю о множественном заполнении внутри заполнения, но это могло вызвать проблему, иначе это должно было сработать. –
Я добавил «model:« Item »в description.item, и это сработало, не совсем понятно почему. Я не совсем уверен в лучшем способе работы с этим в stackoverflow, поэтому я попытался отредактировать ваш ответ, чтобы он был прав, и я могу принять его – iagowp