好吧,我认为如果我只是复制我的整个 node.js 路由会更容易,这样你就可以看到我在说什么。
我正在尝试对我的 MongoDB 数据库进行多个查询(每天一个)。查询运行良好,但是当他们触发回调时,我的增量变量已经增加了。
所以为此:
exports.graph = function(req, res) {
function pad(num, size) {
var s = num+"";
while (s.length < size) s = "0" + s;
return s;
}
database.collection('customerData', function(err, collection) {
for (var i = 2; i < 18; i++) {
sDay = pad(i, 2);
eDay = pad(i + 1, 2);
collection.find({
DATE: {
$gte: sDay + 'APR13:00:00:00',
$lt: eDay + 'APR13:00:00:00'
}
}, function(err, cursor){
cursor.toArray(function(err, data){
var counter = 0;
for (var point in data) {
trans = parseInt(data[point].Total_Transaction * 100);
counter += trans;
}
console.log(i, counter / 100);
});
});
}
});
}
我得到这个输出:
18 22023.29
18 24483.03
18 22644.11
18 23194.31
18 21560.99
18 23024.32
18 24384.93
18 23138.34
18 24400.63
18 28418.6
18 31691.65
18 31111.62
18 42358.74
18 38355.76
18 36787.52
18 42870.19
18 22023.29
18 22644.11
18 24483.03
18 23194.31
18 21560.99
18 23024.32
18 24400.63
18 23138.34
18 24384.93
18 28418.6
18 31691.65
18 31111.62
18 42358.74
18 38355.76
18 36787.52
18 42870.19
这(显然)并不理想 - 数字不一定按照查询被触发的顺序返回,所以对我来说弄清楚哪些去哪里很重要。
我想不出一种方法以一种有意义的方式将我的算术结果存储在查询回调中,以便以后可以使用它。
有什么想法吗?