MW *_*ost 5 mongoose node.js express
在我的routes.js文件的以下代码中,我可以成功填充一个名为的Mongoose对象中的一些引用Map.当我查看页面时,控制台会打印完全填充popmap的editor对象版本.
app.get('/map/:id', function(req, res){
Map
.findOne({ _id: req.map._id })
.populate('_editors')
.run(function (err, popmap) {
console.log('The editors are %s', popmap._editors);
});
res.render('maps/show', {
title: req.map.title,
map: req.map
});
});
Run Code Online (Sandbox Code Playgroud)
但是,我还没想到如何执行填充步骤,使得结果对象仍然在渲染代码的范围内.换句话说,如何将填充的对象传递给Jade模板而不是仅仅发送req.map?
问题是你正在编写Mongoose代码,好像它是同步的,但你需要在运行回调函数中调用res.render,因为那是在查询执行时.在您的示例中,将在查询返回结果之前调用render函数.
除此之外,您可以将popmap变量作为局部变量传递给视图:
app.get('/map/:id', function(req, res){
Map
.findOne({ _id: req.map._id })
.populate('_editors')
.run(function (err, popmap) {
console.log('The editors are %s', popmap._editors);
res.render('maps/show', {
title: req.map.title,
map: req.map,
popmap: popmap // you can access popmap in the view now
});
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1846 次 |
| 最近记录: |