查询mongodb并尝试将结果显示在index.pug中,获取[object Object]

时间:2017-07-20 10:44:34

标签: node.js mongodb

我试图从一个pug / html页面中的mongodb获取数据,而我已经关闭但不完全存在。我已经运行了相关节点和mongo服务器。

我得到的样本数据是

[ { _id: 59708077c9412f6d7f7e8485,
username: 'xyz123',
email: 'xyz123@test.com' } ]

当我控制台记录时,它会显示在节点终端窗口上。

我的app.js中的代码是

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/questiondb';

var mongotest = [];

MongoClient.connect(url, function (err, db) {
        var str = db.collection('usercollection').find();
        str.each(function (err, doc) {
                mongotest.push(doc); //Push result onto results_array
                                console.log(mongotest)

        });

                app.get('/', (req, res) => {
                    res.render('index', {"results": mongotest });


                });

            });

在我的index.pug文件中我已经

  p Hello
    each mongotest, i in results
      div Result #{i} #{mongotest}

html页面中的结果是

Result [object Object]

我假设我必须将对象的结果更改为字符串。当我使用类似JSON.stringify之类的东西时,我将查询中的每个单独的字母作为单独的迭代通过pug中的循环呈现。

我很接近,但我的学习中显然有一个漏洞: - )

提前致谢

固定

对于那些想知道的人,这些是我对我的代码所做的更改,以使其正常工作。我将属性保存到变量中,并在pug模板中引用它。

var readVar;
                readVar = mongotest[0].username;

    });
};

            app.get('/', (req, res) => {
                res.render('index', { readVar});

1 个答案:

答案 0 :(得分:0)

.find()方法是异步方法。 你应该像这样使用它:

db.collection('usercollection').find({}, callback);

function callback(err, docs){
    if(err) { /*errorHandler*/ };
    docs.each(function (err, doc) {
        if(err) { /*errorHandler*/ }
        mongotest.push(doc); //Push result onto results_array
        console.log(mongotest)
    });
};

不要忘记处理回调中的错误