现在我注意到一件事,这对我来说很奇怪,我找不到合适的文档。当我使用Mongoose.find()从集合中获取文档时,我将它们记录到控制台。写的是:
{
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'
}}
答案 0 :(得分:1)
您需要将函数传递给forEach
方法:
users.forEach(function(v, i){
console.log('User name = ' + v.name);
});
如果您未在函数中包装console.log('iterated')
,它将首先调用log
方法并使用返回值发送到forEach
方法。
答案 1 :(得分:0)
console.log('users' + users);
将users
投射到字符串,which通常会通过逗号加入它们。如果你想像往常一样记录它们,不要用字符串连接它们,而是将users
作为单独的参数传递给console.log
:
console.log('users', users);