Untitled

 avatar
unknown
plain_text
6 months ago
1.2 kB
2
Indexable
exports.getOrderDetails = catchAsync(async (req, res, next) => {
  const { id } = req.params;
  const pathsAndFields = { path: 'products.product', select: ['name', 'images'] };

  //const order = await Order.findById(toObjectId(id, next)).populate(pathsAndFields);
  const results = await Order.aggregate([
    { $match: {_id:toObjectId(id, next)} },
    {
      $lookup: {
        from: 'products',
        localField: 'products.product',
        foreignField: '_id',
        pipeline: [{ $project: {name:1 , image:1} }],
        as: 'products'
      }
    },
    {
      $lookup: {
        from: 'salesmen',
        localField: 'sales_man',
        foreignField: '_id',
        pipeline: [{ 
          $lookup: {
            from: 'users',
            localField: '_id',
            foreignField: 'profile',
            pipeline: [{ $project: { name: 1 } }],
            as: 'clientName'
          }
         }],
        as: 'salesmanName'
      }
    },
  ]);
  results[0].salesmanName = results[0]?.salesmanName?.at(0)?.clientName?.at(0)?.name;
  res.status(200).json({ message: 'success', order: results[0] });
});
Editor is loading...
Leave a Comment