将JSON var从路由传递给ejs

时间:2014-04-07 08:23:19

标签: node.js express ejs

我在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中编写代码?

此致 锤

1 个答案:

答案 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>