【问题标题】:Object values are not displayed when I use EJS templating engine使用 EJS 模板引擎时不显示对象值
【发布时间】:2015-08-22 07:32:00
【问题描述】:

我有一个非常简单的 EJS 设置:

staff

<ul>
<% staffs.all.Items.forEach(function(staff){%>
  <li><%= JSON.stringify(staff) %></li>
<% }); %> 
</ul>

<ul>
<% staffs.all.Items.forEach(function(staff){%>
   <li><%= staff.first_name %></li>
<% }); %>
</ul>

我得到的输出是:

staff
  - {"first_name":"John","staff_id":"324b2808-9f2b-4967-a27e-6f140d29ffa3","last_name":"Doe"}
  - {"first_name":"Mike","staff_id":"031c04d6-cd4a-4041-a20d-fc2ae4fbb23f","last_name":"Gates"}

  - 
  -

为什么第二个列表中没有显示任何内容?应该是:

  - John
  - Mike 

【问题讨论】:

  • 这些值是否来自 mongodb?
  • 不,它们来自 DynamoDB。我得到对象然后我传递它: res.render('staff.html', { staffs: staffs });

标签: javascript node.js ejs


【解决方案1】:

在使用下划线模板引擎遇到同样的问题之后。我发现问题实际上在于从 DynamoDB 中检索数据。

现在如果我这样做:

app.Staff.getStaffs = function() {
    var deferred = q.defer()
    app.Staff.scan().exec(function(err, data) {
        if (err){
            deferred.reject(err);
        }else{
            deferred.resolve({
                all: JSON.parse(JSON.stringify(data))
            });
        }
    });
    return deferred.promise
}

而不是这个:

app.Staff.getStaffs = function() {
    var deferred = q.defer()
    app.Staff.scan().exec(function(err, data) {
        if (err){
            deferred.reject(err);
        }else{
            deferred.resolve({
                all: data
            });
        }
    });
    return deferred.promise
}

我得到了价值观。可能不是最优化的解决方案,但可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 2022-12-14
    • 2019-06-07
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    相关资源
    最近更新 更多