Tengo estos dos 3 modelos Usuario, Producto y Pedidos y también tienen referencias entre sí.
Esquema de mis pedidos:
const orderSchema = Schema({ buyerId:{ type: Schema.Types.ObjectId, ref: 'User' }, totalAmount: { type: Number, required: [true, "description is required"] }, createdOn: { type: Date, default: new Date() }, items:[{type:Schema.Types.ObjectId, ref: 'Product'}]})Estoy tratando de usar populate() así:
Order.find() .populate('buyerId')//Reference to User Model .populate('items')// Reference to Product Model .exec(function (err, result){ console.log(result);// RETURNS ONLY buyerId populated console.log(result.buyerId.name);//Successfully references to my User model and prints name console.log(result.items);//Prints Undefined })Puede ver el registro de mi consola arriba y lo que devuelve es solo el ID de comprador completo (solo obtuve la referencia de mi modelo de usuario)
Parece que mi población ('elementos') no funciona en absoluto. El campo de artículos contiene una matriz de ID, donde los ID son los de los productos. Necesito hacer referencia tanto al Usuario como al Producto. Solo estoy siguiendo la documentación en mongoose, no sé qué podría estar haciendo mal.
usar agregado
Order.aggregate([ { $match:{ user:"sample_id" } }, {$lookup:{ from:'users', // users collection name localField:'buyerId', foreignField:'_id', as:'buyerId' }}, { $lookup:{ from:'items', //items collection name localField:'items', foreignField:'_id', as:'items' } }, ])