我在express + EJS中有一些代码,
1)在app.js中,创建了mongo集合对象,
app.locals.userCollection = db.get('userData');
2)在user.js表达路由文件中,我从这个数据库连接中获取数据,并希望将其传递给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 %>;
它给我returnValue没有定义错误。
我是否想知道我是否想要访问returnValue [0] .attr1,我应该在路由和EJS中编写代码?
此致 锤
答案 0 :(得分:3)
您可以尝试以下操作:
在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>