尝试将结果从mongodb返回到节点,但是我收到了一个意外的对象

时间:2016-03-12 22:05:30

标签: node.js mongodb

我试图在运行时从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得到了结果,并将此代码与我已知的工作代码进行了比较。我在这做错了什么?当我期待一个结果时,搜索我的数据库是否有问题?

1 个答案:

答案 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;
}