使用NodeJS hbs包访问打印数据[object Object]

时间:2018-02-22 19:20:15

标签: node.js handlebars.js

尝试使用hbs视图包打印存储在前端NodeJS服务器上的列表中的数据。使用Express和hbs。

这就是代码在服务器上的样子:

app.get("/", function(request, response){
  response.render("index", {list: list});
});

在前端:

 {{{body}}}
 {{#each list}}
  <p>{{ x }}</p>
 {{/each}}

数据存储如下:

 [{ x:
     { type: 'uri',
       value: 'http://example.org/hospital/Basildon_University_Hospital' },
    name: { type: 'literal', value: 'Basildon_University_Hospital' },
    city: { type: 'literal', value: 'Basildon' },
    county: { type: 'literal', value: 'Essex' },
    email: { type: 'literal', value: 'pals@btuh.nhs.uk' },
    phone: { type: 'literal', value: '01268_524900' },
    lat: { type: 'literal', value: '51.557685852050781' },
    long: { type: 'literal', value: '0.45057165622711182' } }]

当尝试输出属性x时,我得到的全部是[object Object]打印,对于数据中的任何其他属性也是如此。尝试使用list.x但我根本没有打印任何内容。

还存储其他数据,如:

[ { Concept:
     { type: 'uri',
       value: 'http://www.openlinksw.com/schemas/virtrdf#QuadMapFormat' } } ]

甚至不打印[object Object]

我可以做些什么来打印值并使用hbs访问对象和列表?

1 个答案:

答案 0 :(得分:1)

不要忘记在服务器端添加以下内容

var Handlebars = require('hbs');

Handlebars.registerHelper('json', function(context) {
    return JSON.stringify(context);
});

然后

app.get("/", function(request, response){
  response.render("index", {list: list});
});

然后使用此

 {{{body}}}
 {{#each list}}
  <p>{{ json x }}</p>
 {{/each}}

工作示例 jsfiddle