Estoy tratando de crear un sitio web de comercio electrónico usando reaccionar, nodo y mongodb. Creé el esquema de pedido que contiene cmdRef (cadena), theClient (Id del usuario) y una matriz de Productos (con ProductId y qty) como el siguiente código:
Orderchema=new mongoose.Schema({ CmdRef:String, Client:{type: mongoose.Schema.Types.ObjectId, ref: 'User'}, TotalProducts:[{ProductId:{type: mongoose.Schema.Types.ObjectId, ref: 'Product'},Quantity:Number}],y ahora estoy tratando de crear la ruta para obtener todas las Órdenes
CommandRouter.get('/AllCommands',async(req,res)=>{ try { const cmd= await Command.find({}).populate({path: 'Client', select: 'firstName lastName'}).populate({path:'TotalProducts'}) // res.json(cmd) } catch(error) { return res.status(500).send({message : "error get orders"}) } })Aquí encontré un problema al completar la identificación de productos en la tabla, completa la identificación del cliente y devuelve toda la información sobre el usuario, pero falla con la tabla de productos, esta es la respuesta completa usando PostMan
¿Alguno de ustedes tiene alguna idea sobre cómo completar el ID de producto en la tabla TotalProducts?
El total de productos no es un ObjectId . Debería estar ProductId en su lugar.
Esto debería funcionar.
const cmd = await Command .find({}) .populate([ { path: 'Client', select: 'firstName lastName' }, { path: 'TotalProducts' populate: 'ProductId' } ]);