【发布时间】:2015-11-06 03:18:21
【问题描述】:
我正在尝试从 MongoDB 获取多个文档并将所有数据发送到一个数组中,但我很难理解如何使用事件驱动的 Node.js 来完成。
问题是在dataArray.push(tempObject)被执行的时候,tempObject["data"] = tempDataArray还没有被执行。
我的代码如下所示:
app.post('/api/charts', function(req, res) {
var names = req.body.names;
var categories = req.body.categories;
var dataArray = [];
for (i = 0; i < names.length; i++) {
var tempObject = {};
tempObject["name"] = names[i];
Company.find({ name : names[i] }, function(err, result) {
if (err) {
throw err;
}
var tempDataArray = [];
for (k = 0; k < categories.length; k++) {
var tempDataObject = {};
tempDataObject["name"] = categories[k];
tempDataObject["numbers"] = result[0]["data"][categories[k]]["numbers"];
tempDataObject["dates"] = result[0]["data"][categories[k]]["dates"];
tempDataArray.push(tempDataObject);
}
tempObject["data"] = tempDataArray;
});
dataArray.push(tempObject);
}
res.send(dataArray);
});
任何关于如何正确实现预期结果的建议将不胜感激。
【问题讨论】:
-
可以在 Nodejs 中使用 Promise 对象吗?
-
我在理解它的工作原理时遇到了类似的困难。看看this。简而言之,当您拥有数据时,您需要发布处理所有内容 - 即在您的回调中查找,打包和发送响应,正如@kyrylkov 所说。
标签: javascript node.js mongodb asynchronous