使用nodejs:mongodb find然后添加到Array

时间:2010-10-08 09:29:56

标签: mongodb node.js

我使用mongodb和nodejs创建了一个包含少量用户的简单数据库。接下来我循环遍历列表并使用sys.puts()显示列表名称中的用户。

不,我将用户添加到Array()中,如下所示:

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.我现在有点迷失了

1 个答案:

答案 0 :(得分:1)

您正在做的是在数组对象上设置properties,这可能有点令人困惑。

[]用于indexeskeys,这意味着如果你的数组,users[0]将返回第一个元素 数组,但users['blaid12']将获取/设置属性blaid12' on the array object, that's like doing users.blaid12`。

所以最后你的数组变得更像一个hashmap。 length属性不计算对象的属性,它计算数组中的元素。

您有几种方法可以解决问题:

  1. 使用对象{}并使用用户ID作为该对象的键,您必须通过另一个变量跟踪用户数。

  2. 使用users.push({'name':...})将数组作为数组添加到数组中,如果您还需要 userid ,则只需将其添加到您推送到的对象中数组。

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