Node.js - 在返回响应之前不运行数据库承诺

金斯利 Kbc 漫画

我的节点服务器上有这个请求处理程序。它有三个 MongoDB 查询,我希望在发送响应之前返回所有结果。

api.get('/getStats/:productID', (req,res)=>{
  let data = {};
  let dailySales = [];
  let avgProduct = "";
  let customers = [];

  Sales.find({productID: productID}).then(
    sales => {
      dailySales = sales;
    }
  );

  Products.find({}).then(
    products => {
      // Calculate Avg product here
      avgProduct = result;
    }
  );

  Customers.find({}).then(
    customers => {
      customers = customers;
    }
  );

  data = {
    dailySales,
    avgProduct,
    customers
  };

  res.json(data);
});

但是运行这个返回

data: {
  dailySales: [],
  avgProduct: "",
  customers: []
}

即 Mongo 响应在数据运行之前返回。请问我该如何解决。谢谢你

拉维

您可以尝试使用Promise.all可以将 MongoDB 查询作为参数传递给它的位置,当所有查询返回数组中的结果时,承诺将得到解决

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章