Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组递增Javascript/node js/mongodb_Javascript_Arrays_Node.js_Mongodb - Fatal编程技术网

数组递增Javascript/node js/mongodb

数组递增Javascript/node js/mongodb,javascript,arrays,node.js,mongodb,Javascript,Arrays,Node.js,Mongodb,我正在尝试使用节点JS从MongoDB收集数据,以便稍后绘制图形 我的目标是按小时收集所有条目。在我的收藏中有一个“created_at”字段,用于存储日期对象 我尝试将数据存储在一个包含24个插槽的阵列中,如下所示: // padding the array for each hour of the day var hours = new Array(23); // defaulting the value for each hour to 0 for(var i=0; i<hours

我正在尝试使用节点JS从MongoDB收集数据,以便稍后绘制图形

我的目标是按小时收集所有条目。在我的收藏中有一个“created_at”字段,用于存储日期对象

我尝试将数据存储在一个包含24个插槽的阵列中,如下所示:

// padding the array for each hour of the day
var hours = new Array(23);

// defaulting the value for each hour to 0
for(var i=0; i<hours.length; i++){
    hours[i] = 0;
}

db.collection.find({}, {"created_at": 1}, function(err, entry){
    if (err){ doSomething(); }
    else {
        entry.forEach(function(item, index){
                    // get hour of the day from the Date object
            h = item["created_at"].getHours();
            h = parseInt(h);
                    // store hour of the day and count it up
            hours[h]++;
            console.log("#%s: %s", index, h);
        });
    }
});

console.log(hours);
//为一天中的每个小时填充数组
var小时数=新阵列(23);
//将每小时的值默认为0

对于(var i=0;i我怀疑问题在于并发性:集合的
.find
方法是异步的。因此,在调用
.find
之后,在
项之前执行
后的
控制台.log
。forEach
甚至执行过。尝试将
控制台.log
移动到
else
子句的主体中,在
forEach
之后(这是同步的),您应该会看到您要查找的结果


展望未来,你必须使用承诺或其他方法来获得你想要的结果。

你的怀疑是正确的,而且实际上非常符合逻辑。我对这种异步/回调的东西还是新手。谢谢。我做JavaScript异步编程已经快一年了,我仍然经常会被它咬一口。这是一只狡猾的野兽!