【发布时间】:2018-10-23 18:33:12
【问题描述】:
这是我的代码
module.exports.comparator = function(req, res){
Buyer
.find()
.exec(function (err, buyer) {
if (err) {
console.log("Error finding buyer");
res
.status(500)
.json(err);
} else {
console.log("Found buyer", buyer.length);
res
.json(buyer);
buyerData = buyer;
}
});
Seller
.find()
.exec(function (err, seller) {
if (err) {
console.log("Error finding seller");
res
.status(500)
.json(err);
} else {
console.log("Found seller", seller.length);
res
.json(seller);
sellerData = seller;
}
});
})
如您所见,我正在尝试获取 2 个集合并将它们存储到一个变量中,因为我想进一步编码为...
buyerData.forEach((buyer) => {
sellerData.forEach((seller) => {
console.log(buyer.bidPrice , seller.askPrice)
if(buyer.bidPrice == seller.askPrice){
但是每当我运行它时,我都会收到这样的错误
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:491:11)
at ServerResponse.setHeader (_http_outgoing.js:498:3)
at ServerResponse.header (E:\eClass\node_modules\express\lib\response.js:767:10)
at ServerResponse.send (E:\eClass\node_modules\express\lib\response.js:170:12)
那么我是否可以从这些不同的集合中获取数据并对它们进行其他计算?
【问题讨论】:
-
您看到此错误是因为您已经在第一个查询中发送了响应,并且您在下一个查询中再次发送。
-
如上所述,您不能“两次”发送响应。无论如何,您可能真的不想返回每个集合中的所有数据。数据之间可能存在“某种关系”,因此您可能想要“加入”并且可能实际上“在数据库中”进行一些“计算”,而不是将所有数据库拉入客户端。主要是你似乎不理解这两个“异步”函数在继续下一个之前不会等待对方完成。标记的重复项应该可以帮助您解决这些问题。
标签: javascript node.js express mongoose