2014-12-11 2 views
0

Мне нужно отображать все документы, хранящиеся в моем mongodb. Я попытался следующий код, который просто получить collection.find() и отображение через res.send()Express.js collection.find() return Object

router.get('/index', function(req,res){ 
var db = req.db 
var collection = db.get('usercollection') 

var display = util.inspect(collection.find())); 
res.send(display); 
}); 

Я ожидал, что он отображает фактический документ, сохраненный в MongoDB. Но вместо этого он отобразил этот формат объекта:

{cold:{manager:{driver:[Object], helper:[Object], collection:[Object]..... 

Есть ли еще какие-либо шаги для отображения необработанного документа mongodb?

+0

вот средний стек братан – Rafael

ответ

1

Если вы используете библиотеку official 10gen library, тогда вы не можете просто вывести collection.find(), не откладывая ее. Самый простой способ сделать это для небольших наборов данных является

collection.find().toArray(function(err, results) { 
    if (err) { 
     // do something error-y 
    } else { 
     res.send(results); 
    } 
}); 

Если вы размещаете больше кода, и помечать вопрос с библиотеками, которые вы используете, вы будете иметь возможность получить более целенаправленную помощь. Если библиотека используется возвращает promise, это, вероятно, как бы вы разматывать:

collection.find().then(function(results){ 
    res.send(results); 
}).catch(function(err){ 
    console.error(err); 
}); 
+0

я считаю, вы можете использовать 'res.send' только один раз для каждого запроса. – thefourtheye

+0

Спасибо! Это было именно то, что я пробовал после того, как я исследовал StackOverflow. У меня ошибка: «Объект № не имеет метода« toArray ». Кажется, что методArray не является методом по умолчанию? – Taewan

+0

Я обновил свой ответ, включив в него мое лучшее предположение о том, как вы будете обрабатывать возвращаемый объект' Promise'. –