将JSON var从路由传递到ejs [英] Pass JSON var from route to ejs
本文介绍了将JSON var从路由传递到ejs的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些express+ejs的代码,
1)在app.js中创建mongo集合对象,
app.locals.userCollection = db.get('userData');
2)在user.js快速路由文件中,我从这个DB连接中获取数据,希望将其传递给ejs进行渲染,
exports.list = function(req, res){
req.app.locals.userCollection.find({},function(err , returnValue){
if(returnValue.length>0){
res.render('user', res.locals.returnValue);
}
return err;
});
};
3)在user.ejs中,我尝试使用
<div><script>
var test = <%- returnValue %>;
它显示"未定义rereturn Value"错误。
我是否可以知道如果我想访问rereturn Value[0].attr1,我应该在route和ejs中编码什么?
问候 锤子
推荐答案
您可以尝试以下操作:
在Node.js中:
res.render('user', data: res.locals.returnValue);
在ejs中:
<script type='text/javascript'>
var rows =<%-JSON.stringify(data)%>
alert(rows);
</script>
更新(根据评论中的问题):
如果要在rows
上循环,则不应使用JSON.stringify()
,因为它会将您的对象转换为String
,您可以尝试执行以下操作(如果服务器放入的数据是数组对象,则以下代码有效)。
<script type='text/javascript'>
<% data.forEach(function(dataRow, idxOfRow, orgnlAryObject) {
// You can directly use the dataRow to get each row from the array Object `data`
//alert(JSON.stringify(dataRow)); // <== You can try this
}); %>
</script>
这篇关于将JSON var从路由传递到ejs的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文