Node.js - 在返回响应之前未运行DB promise

Kin*_*ics 0 javascript asynchronous node.js

我的节点服务器上有这个请求处理程序.它有三个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);
});
Run Code Online (Sandbox Code Playgroud)

但是运行它会返回

data: {
  dailySales: [],
  avgProduct: "",
  customers: []
}
Run Code Online (Sandbox Code Playgroud)

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

Kar*_*rim 5

在发送实际响应之前等待所有承诺解决

const sales = Sales.find({productID: productID});
const allProducts = Products.find({});
const allCustomers = Customers.find({});

Promise.all([sales, allProducts, allCustomers])
 .then(data => res.json(data));  
Run Code Online (Sandbox Code Playgroud)