【发布时间】:2018-04-06 19:55:18
【问题描述】:
使用带 express 的节点,我查询了我的数据库并返回了一个对象数组 - 已通过控制台记录该数组进行验证。
我现在需要遍历对象数组,获取我需要的键/值对并使用 pug 将它们作为列表打印到 html。
Pug 的迭代文档是这样说的:
ul
each val in [1, 2, 3, 4, 5]
li= val
在我的 app.js 文件中,这是我用来呈现页面的代码:
app.get('/', function (req, res) {
res.render('index', {storeItems: results});
});
在我的 pug 文件中,我使用的是这种语法。
.col-6
ul.list-group
each storeItem in storeItems
li.list-group-item storeItem.product_name
运行此代码会产生以下错误。
无法读取未定义的属性“长度”。它说错误在这一行:
each storeItem in storeItems
我没有看到我需要在 pug 文档中声明数组长度的位置。我错过了什么?我尝试将 .length 添加到 storeItems - 生成相同的错误。我尝试在 li 之后使用 = 符号,这也会产生相同的错误。
【问题讨论】:
-
对 Pug 不是很熟悉,但是文档说要在元素标签 pugjs.org/language/iteration.html 之后添加一个 = 不知道您是否缺少 li.list-group-item= storeItem.product_name 中的 = 和它只是在堆栈中抛出一个错误。
-
我最好的猜测是 storeItems 既不是数组也不是对象。尝试硬编码值
results -
@KaysserKayyali 我已经尝试过了,它仍然返回相同的错误。
-
@maioman 我通过 ejs 让它工作得很好,而且迭代得很好。但由于其他原因,我不得不改用翡翠/哈巴狗。在 ejs 中,我使用了 storeItems.length,因为它具有更传统的 js 语法,而且效果很好。
-
请添加您的 console.log(results) 并在您的问题中写下 console.log 的打印内容
标签: javascript node.js express pug