Express节点-将“查找猫鼬”的结果返回给变量

时间:2020-04-14 04:31:20

标签: javascript node.js mongodb rest express

我将把type_item返回到客户端,但是我无法将Mongoose结果返回到变量type_item [i] .items,它什么也不会返回...

如何将猫鼬数据返回到type_item返回结果?

var type_item = [
  {
    type_name : "Item A",
    type : "1",
    items : []
  },
  {
    type_name : "Item B",
    type : "2",
    items : []
  },
  {
    type_name : "Item C",
    type : "3",
    items : []
  },
]
for (var i = 0; i < type_item.length; i++) {
  var populateQuery = {
      path: 'item',
      model: "Item",
      match: {
          type: type_item[i].type,
          is_publish: true
      },
      select: 'img_item merchant price item_name',
      populate: {
          path: 'merchant price',
          select: 'merchant_name usd_price eur_price'
      }
  }

  var items = VariantItems.find()
    .select('is_available total_stock exp_date')
    .populate(populateQuery)
    .limit(5)
    .exec(function (err, data) {
        if (err) {
            res.status(500).send(err)
        } else {
            var results = []
            for (var j = 0; j < data.length; j++) {
              if (data[j].merchant != null) {
                  results.push(data[j])
              } 
            }
            return results
        }
    })
  type_package[i].items = items
  console.log(items);
}
res.status(200).send({
              status: 200,
              iserror: false,
              message: 'Get List Items Success!',
              data: type_item
          })

我记录项目的结果

Promise { <pending> }
Promise { <pending> }
Promise { <pending> }

请帮助我... 谢谢:)

1 个答案:

答案 0 :(得分:0)

您正在兑现承诺,因此您需要解决承诺以取得结果

您必须选择:

  • 要么使用.then

    var个项= Items.find() .select('is_available total_stock exp_date') .populate(populateQuery) .limit(5) .exec(您的函数) .then(结果=>结果) .catch(err => err)

  • 或使用“异步等待ES6”功能

您需要先使函数异步,然后才能使用await关键字

app.post("/routename", async(req,res)=>{

    var items = await Items.find()
        .select('is_available total_stock exp_date')
        .populate(populateQuery)
        .limit(5)
        .exec(//logic)
}