将JSON var从路由传递到ejs [英] Pass JSON var from route to ejs

查看:19
本文介绍了将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆