如何使用node js在购物车页面显示购物车物品

问题描述 投票:0回答:2

这是我使用的代码

getCartProducts:(userId)=>{
    return new Promise(async(resolve,reject)=>{
      let cartItems = await db.get().collection(collection.CART_COLLECTION).aggregate([
        {
          $match:{user:objectId(userId)}
        },
        {
          $lookup:{
            from:collection.PRODUCT_COLLECTION,
            let:{prodList:'$products'},
            pipeline:[
              {
                $match:{
                  $expr:{
                    $in:['$_id',"$$prodList"]
                  },
                },
              },
            ],
            as:'cartItems'
          }
        }
      ]).toArray()
      
      resolve(cartItems)
    })
  }

路由器代码:-

router.get('/cart',varifiedLogin,async(req,res)=>{
  
  let products = await userHelpers.getCartProducts(req.session.user._id)
  console.log(products);
  
  res.render('user/cart')
})

我得到的输出:-

[
  {
    _id: 5fac03eed5f7b103a8906c03,
    user: 5fa8f0dbd417a11f6db37544,
    products: [
      5fac03eed5f7b103a8906c02,
      5fac06f454045e0403e470e0,
      5fac268d2071f006ff398666
    ],
    cartItems: []
  }
]

这是预期的输出。我应该在购物车项目中获取对象。 _id 是产品 ID 具有用户 ID 的用户字段 该产品有 3 件商品,我已添加到购物车。 在购物车内,我需要将产品作为数组获取。

[
  {
    _id: 5fac03eed5f7b103a8906c03,
    user: 5fa8f0dbd417a11f6db37544,
    products: [
      5fac03eed5f7b103a8906c02,
      5fac06f454045e0403e470e0,
      5fac268d2071f006ff398666
    ],
    cartItems: [[Object],[Object]]
  }
]
node.js mongodb express mongodb-query node-modules
2个回答
0
投票

$in
中使用第二个参数的数组。
$in
恰好需要 2 个参数。

像这样-

$in: ['$_id', ["$$prodList"]]


0
投票

解决(cartItems[0].cartItems)

© www.soinside.com 2019 - 2024. All rights reserved.