我试图从一个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});
答案 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)
});
};
不要忘记处理回调中的错误