【发布时间】:2019-08-07 10:34:45
【问题描述】:
我正在制作第一个 node/express/mongo/handlebars 项目,并在 HTML 输出端苦苦挣扎。我确实让它工作了一段时间,但在开发代码时破坏了一些东西。
我不确定我是否只是对我的初始输出进行了侥幸,并正在寻找有关如何最好地解决问题的建议,或者这是否是一个简单的错误。我已经毫无问题地向 mongo 添加了条目,并且可以正常检索数据,但无法始终输出结果。
router.get('/:chanName', function(req, res, next) {
if (req.params.chanName != 'add') {
let myData = {};
MongoClient.connect(url, { useNewUrlParser: true }, (err, client) => {
if (err) { return console.log('Unable to connect to MongoDB'); }
//get result from db
client.db('tube').collection('channel-reviews').find({'channel': req.params.chanName}).toArray(function(err, result) {
if (err) throw err;
myData = result[0];
// myData is populated object here
});
// myData is empty object here
client.close();
res.render('review');
});
} else {
res.render('add');
}
});
该 URL 用作检索 mongo 条目的参数,然后我尝试使用以下模板将其呈现为列表
<ul>
<li>{{ myData.channel }}</li>
<li>{{ myData.chanURL }}</li>
<li>{{ myData.score }}</li>
<li>{{ myData.title }}</li>
<li>{{ myData.content }}</li>
</ul>
我是不是把一些东西放在了错误的地方,还是一些更基本的东西(比如最终代码在数据被检索和处理之前很久就执行了)并且需要使用 Promises 等?
【问题讨论】:
-
你用的是哪个模板引擎,我猜是
ejs吧? -
使用的模板引擎是Handlebars
标签: javascript node.js express ejs