Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 查询mongodb并尝试获取要在index.pug中显示的结果,获取[object]_Node.js_Mongodb - Fatal编程技术网

Node.js 查询mongodb并尝试获取要在index.pug中显示的结果,获取[object]

Node.js 查询mongodb并尝试获取要在index.pug中显示的结果,获取[object],node.js,mongodb,Node.js,Mongodb,我正在尝试从一个pug/html页面中的mongodb获取数据,我已经很接近了,但还不太清楚。我已经运行了相关的节点和mongo服务器 我得到的样本数据是 [ { _id: 59708077c9412f6d7f7e8485, username: 'xyz123', email: 'xyz123@test.com' } ] 当我将其记录在控制台日志中时,它会显示在节点终端窗口中 我的app.js中的代码是 var MongoClient = require('mongodb').MongoCli

我正在尝试从一个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});
.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)
    });
};
别忘了处理回调内部的错误

。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)
    });
};

别忘了处理回调中的错误

谢谢你,注意到了。我已经做了更改,但仍然没有成功。我已经从对象引用了一个set用户名到一个变量,并将该变量传递给了pug模板,但我没有得到任何东西。它正确地记录在nodejs控制台中……实际上,刚刚解决了这个问题。我会为其他人更新我的问题和答案,谢谢你的帮助!谢谢你,我注意到了。我已经做了那个改变,但仍然一无所获。我已经从对象引用了一个set用户名到一个变量,并将该变量传递给了pug模板,但我没有得到任何东西。它正确地记录在nodejs控制台中……实际上,刚刚解决了这个问题。我会为其他人更新我的问题和答案,谢谢你的帮助!