node.js - 如何使用 Pugjs 或 Jade 创建表
问题描述
我想使用 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”?
我怎样才能解决这个问题?
解决方案
您的问题与您开始each
循环的位置有关,但您的 JSON 也存在一些结构性问题。
我假设您将对象传递到您的路线中,如下所示:
var data = { "accounts": ... }
res.render('templatename', data);
这意味着帐户对象在渲染时将位于 pug 模板的根目录。
当您在帐户(对象,而不是数组)上创建循环时,pug 将遍历该对象中的每个属性,因此您的第一个 each ( each users in accounts
) 将在users
变量中为您提供这两个值:
- 用户
- 应用
我不认为那是你想要的。如果您将accounts.user
段转换为数组,您可以成功地循环通过一组用户,如下所示:
each user in accounts.users
至于第二个,您需要按如下方式引用应用程序:
each application in accounts.application
或者,您可能会将数据传递给渲染函数,如下所示:
var data = { "accounts": ... }
res.render('templatename', data.accounts);
如果您这样做,那么您将像这样遍历用户:
each user in users
应用程序循环将是这样的:
each application in applications
请快速查看pug 迭代文档以获取更多参考。
推荐阅读
- python - 让 VoiceChannel.members 和 Guild.members 返回完整列表的问题
- azure - 从 Dropbox 部署静态 Azure WebApp
- postgresql - PostgreSQL 获取另一个表中 jsonb 项中不存在的日期
- racket - 将程序的一部分视为 Racket 中的数据
- scala - 扩展具有需要隐式成员的特征的对象
- java - 将 int[] 数组的条目设置为 null 时出错
- python - SymPy - 区分一个有点扭曲的函数
- ios - 移动应用 (iOS) 安全转储内存转储 (Frida)
- r - r — map(map(Auto, range), function(col) {paste0(col[[1]], “,” col[[2]])} 的更面向流 (%>%) 的习惯用法是什么?
- python - 如何检查用户输入是否在列表中的随机字符串中?