我试图在运行时从mongodb返回结果
> db.message.find({})
从mongo命令行我得到:
{ "_id" : ObjectId("56e48d8586a704e8f3cec81e"), "message" : "this is a message from mongo" }
正如所料。
现在我在node.js的路由器中有这段代码:
var router = function () {
indexRouter.route('/')
.get(function(req, res){
var url = 'mongodb://localhost:27017/message';
mongodb.connect(url, function(err, db) {
var collection = db.collection('message');
collection.find({},
function (err, results) {
res.render('index', {
message : results
})
console.log(results);
});
});
});
return indexRouter;
}
这样运行正常但是我的结果是一个令人困惑的对象,在对象开始之前我还没有看到过这样的对象:
Readable {
pool: null,
server: null,
disconnectHandler:
{ s: { storedOps: [], storeOptions: [Object], topology: [Object] },
length: [Getter] },
bson: {},
ns: 'message.message',
cmd:
之前我已经从mongo得到了结果,并将此代码与我已知的工作代码进行了比较。我在这做错了什么?当我期待一个结果时,搜索我的数据库是否有问题?
答案 0 :(得分:1)
看起来我需要使用.toArray,因为我的数据库可能有多个结果。继承人工作的路由器代码:
var router = function () {
indexRouter.route('/')
.get(function (req, res) {
var url = 'mongodb://localhost:27017/message';
mongodb.connect(url, function (err, db) {
var collection = db.collection('message');
collection.find({}).toArray(function (err, results) {
res.render('index', {
message: results
});
console.log(results);
});
});
});
return indexRouter;
}