2014-09-12 3 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); 
}); 

EDIT

Ошибка типа из-за не проходящей функции до forEach способ, как упомянуто в комментариях. Но почему он не возвращает что-то вроде:

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

Вы не передавая функцию 'Foreach()'. Вы передаете 'undefined', потому что это то, что возвращает' console.log() '. –

+0

Есть ли у них '_id' внутри или вне объекта? Это строка JSON? – krillgar

+1

Не путайте «то, что регистрируется на консоли», это «код JavaScript» – Quentin

ответ

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. Если вы хотите зарегистрировать их, как обычно, не Concat их в строку, но передать users как отдельный аргумент console.log:

console.log('users', users); 
Смежные вопросы