我使用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.我现在有点迷失了
答案 0 :(得分:1)
您正在做的是在数组对象上设置properties
,这可能有点令人困惑。
[]
用于indexes
和keys
,这意味着如果你的数组,users[0]
将返回第一个元素 数组,但users['blaid12']
将获取/设置属性blaid12' on the array object, that's like doing
users.blaid12`。
所以最后你的数组变得更像一个hashmap。 length
属性不计算对象的属性,它计算数组中的元素。
您有几种方法可以解决问题:
使用对象{}
并使用用户ID作为该对象的键,您必须通过另一个变量跟踪用户数。
使用users.push({'name':...})
将数组作为数组添加到数组中,如果您还需要 userid ,则只需将其添加到您推送到的对象中数组。
使用混合方法,使用数组推送值,然后使用对象将ID映射到数组索引。