Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
使用nodejs:mongodb查找然后添加到数组_Mongodb_Node.js - Fatal编程技术网

使用nodejs:mongodb查找然后添加到数组

使用nodejs:mongodb查找然后添加到数组,mongodb,node.js,Mongodb,Node.js,我用mongodb和nodejs制作了一个简单的数据库,其中有几个用户。接下来,im循环浏览列表,并使用sys.puts()以列表的名称等显示用户 否我正在将用户添加到数组()中,如下所示: db.open(function(err, db) { db.collection('users', function(err, collection) { collection.find({}, {'sort':[['name', 1]]}, function(err, curso

我用mongodb和nodejs制作了一个简单的数据库,其中有几个用户。接下来,im循环浏览列表,并使用sys.puts()以列表的名称等显示用户

否我正在将用户添加到数组()中,如下所示:

db.open(function(err, db) {
    db.collection('users', function(err, collection) {
        collection.find({}, {'sort':[['name', 1]]}, function(err, cursor) {
            cursor.each(function(err, user) {
                if(user != null) {
                    users[user._id] = { 'name':user.name, 'email': user.email };
                    sys.puts(">> Adding user to list... "+ user.name);

                }
            });
            db.close();
        });
    });
});

这就是我将用户添加到阵列的方式吗?因为users.lenght=0。我现在有点不知所措了

您正在对数组对象设置
属性
,这可能有点混乱

[]
既用于
索引
又用于
,这意味着在数组中,
用户[0]
将返回数组中的第一个元素,但
用户['blaid12']
将获取/设置数组对象上的属性
blaid12',这与执行
users.blaid12`

因此,最终您的数组变得更像一个hashmap。
length
属性不计算对象的属性,而是计算数组中的元素

您有几种解决问题的方法:

  • 使用对象
    {}
    并将用户ID用作该对象上的键,您必须通过另一个变量跟踪用户计数

  • 通过使用
    users.push({'name':…})
    将数组作为数组使用,如果您也需要用户ID,则只需将其添加到推送到数组中的对象即可

  • 使用混合方法,使用数组推送值,然后使用对象将ID映射到数组索引


  • 谢谢,我现在就试试这个!我也要做var users={},然后是users.push({'name':user.name…})?我得到错误:TypeError:objectsuccess没有方法“push”-1问题标题含糊不清,对其他用户没有帮助