我想使用Pug将此json文件渲染到表中,但并没有如我所愿。我想要两种语言的数据和app_adi,但只有最新数据。如何同时显示两者?
JSON文件
{
"accounts":{
"user":{
"_id":"5a500vlflg0aslf011ld0a25a5",
"username":"john",
"id":"59d25992988fsaj19fe31d7",
"name":"Test",
"customer":" John Carew",
},
"application":[
{
"app_id":"5af56pi314-y1i96kdnqs871nih35",
"language":"es"
},
{
"app_id":"5af56pi314-blvinpgn4c95ywyt8j",
"language":"en"
}
]
}
}
代码
body
main
.container
table.table
tr
th username
th customer
th language
th app_id
tbody
each users in accounts
tr
td #{users.user.name}
td #{users.user.email}
each app in application
td #{app.language}
td #{app.app_id}
我要建立此表:
username customer language app_di
john John Carew es 5af56pi314-y1i96kdnqs871nih35
en 5af56pi314-blvinpgn4c95ywyt8j
但是当我运行上面的代码时,我只得到了最后一个,只有语言“ en”?
我该如何解决?
答案 0 :(得分:0)
您的问题与开始each
循环的位置有关,但是JSON也存在一些结构性问题。
我假设您正在像这样将对象传递到您的路线中:
var data = { "accounts": ... }
res.render('templatename', data);
这表示帐户对象在呈现时将位于您的哈巴狗模板的根。
当您在帐户(对象,而不是数组)上创建循环时,pug将遍历该对象中的每个属性,因此您的第一个(each users in accounts
)将在{{1 }}变量:
我认为这不是您想要的。如果将users
段转换为数组,则可以像这样成功地遍历一组用户:
accounts.user
对于第二个,您将需要按以下方式引用该应用程序:
each user in accounts.users
或者,您可能会像这样将数据传递到render函数中:
each application in accounts.application
如果您这样做,那么您将像这样遍历用户:
var data = { "accounts": ... }
res.render('templatename', data.accounts);
应用程序循环将是这样:
each user in users
请快速浏览pug iteration docs,以获取更多参考。