Soy nuevo en MongoDB y trato de completar datos de otra colección en una respuesta. El ejemplo más sencillo sería el siguiente:
const CartSchema = new Schema({ items: [{ product: { type: Schema.Types.ObjectId, ref: 'product' }, qty: Number }], ... }); Puedo usar .populate() cuando las relaciones están en el nivel raíz, pero en el ejemplo anterior, tengo una variedad de elementos con sus propias propiedades, por ejemplo, qty , más una referencia _id a un producto. Me gustaría completar el objeto del producto en cada elemento del automóvil, pero parece que no puedo encontrar ningún ejemplo sobre cuál es la forma "correcta" de hacerlo.
Cart.findById(id) .populate('products') // <-- something like this .then(record => ... ) .catch(next); Sé que probablemente podría hacer un .find() separado en la colección de productos después de ubicar el registro del carrito y extender manualmente el objeto inicial, pero esperaba que hubiera una manera de completar los datos dentro de la consulta original.
Puedes probar esto, te funcionará.
Cart.findById(id) .populate('items.product') .then(record => ... ) .catch(next); .populate('items.product') populate objeto del product de todos los elementos del carrito presentes en la matriz.