无法映射到Mongoose查询结果(猫鼬查询结果上的async.map无法正常工作)

时间:2020-09-10 18:04:41

标签: node.js mongodb mongoose async-await

我正在尝试在具有(productId,size,quantity)之类的属性的cart(外部async.map)上进行映射,我正在该地图中执行一个查询,该查询从productId中检索imageIds(Array)。我在imageIds(inner async.map)上进行映射以检索图像数据。即使在使用回调之后,也要在外部async.map回调之后检索图像数据(执行doc.image = result)。 我被困在这里,请帮帮我:(

CODE

var cart = await Cart.find({ "user_id": user_id }, { "_id": 0, "size": 1, "quantity": 1, "productId": 1 })
async.map(cart,function(doc,done) {
        Product.findById(doc.productId,{"name": 1, "actualPrice": 1, "discount": 1, "type": 1, "imageIds":1}, function(err, q){
          if(err) return next(err);
          doc=doc.toObject() 
          async.map(q.imageIds,function(img,done){
            Image.findById(img,function(err,imgRes){
              done(null,imgRes)
            })
          },function(err,result){
            if(err) return next(err);
            doc.image=result
          })     
          doc.name = q.name
          doc.actualPrice = q.actualPrice
          doc.discount = q.discount
          doc.type = q.type
          done(null, doc);
        });
        
      }, function(err, result) {
        if(err) return next(err);
        res.json(result);  
      })

0 个答案:

没有答案