2014-09-12 56 views
0

现在我注意到一件事,这对我来说很奇怪,我找不到合适的文档。当我使用Mongoose.find()从集合中获取文档时,我将它们记录到控制台。什么是写的是:Javascript中逗号分隔的对象是什么?

{ 
    name: 'first document' 
},{ 
    name: 'second document' 
} 

(当然他们_id的,但是这是为了简单起见。)

这是什么东西在Javascript?我的意思是,我试图做.forEach就可以了,但我得到:

TypeError: undefined is not a function 
    at Array.forEach (native) 
    ... 

,但是,我可以正常做这样的事情:

User.find({}, function (err, users){ 
//  users.forEach(console.log('iterated')); -> returns error that I've described 

    for(var i=0; i<users.length; i++){ 
     console.log('iterated'); 
    } 
    console.log('users' + users); 
}); 

编辑

错误类型是因为没有将功能传递给forEach方法,正如评论中所述。但是,为什么不回这样的:

[{ 
    name: 'first document' 
},{ 
    name: 'second document' 
}} 
+2

你不能传递一个函数'的forEach()'。你传递'undefined',因为这是'console.log()'返回的。 – 2014-09-12 13:38:06

+0

他们是否在对象内部或外部有'_id'?它是一个JSON字符串吗? – krillgar 2014-09-12 13:38:08

+1

不要混淆“什么是登录到控制台”是“JavaScript代码” – Quentin 2014-09-12 13:39:53

回答

1

你需要一个函数传递给forEach方法:

users.forEach(function(v, i){ 
    console.log('User name = ' + v.name); 
}); 

当你没有在功能包console.log('iterated'),它会首先调用方法log并使用返回值发送到forEach方法。

0
console.log('users' + users); 

撒开你users为字符串,which通常由commata加入他们的行列。如果你想登录他们像往常一样,不要用字符串连接它们,但通过users作为一个单独的参数console.log

console.log('users', users);