我正尝试在我的网页上显示通过猫鼬从数据库中检索到的所有结果,但是我在Cannot read property 'length' of undefined
文件中一直写着{{1 }}循环遍历index.pug
对象的返回光标,以便我可以显示它们。我是新来表达,猫鼬和哈巴狗的人,所以我很难弄清楚我的错误。
这是我的each
文件的摘要:
json
猫鼬应该从我的index.pug
文件的以下section(class="get")
h3 Get Data
a(href="/get-data") LOAD DATA
div
each val in items
article(class="item")
div Title: #{val.title}
div Content: #{val.content}
div Author: #{val.author}
div ID: #{val._id}
片段中将猫鼬传入items
:
express.js
当我尝试加载网页时,遇到此错误:
无法读取未定义的属性“ length”
详细信息指向我的每个循环的行:
index.js
任何对此问题的见解将不胜感激。谢谢!
答案 0 :(得分:0)
查询数据库时,您必须遇到一些问题,在使用检索到的结果之前,必须检查查询是否成功。因为您正在使用Promise
获得结果,所以可以在a之后添加catch
来捕获将抛出的任何错误
router.get('/get-data', function(req, res, next) {
// Use mongoose to find data from database
UserData.find({})
.then(function(doc) {
res.render('index', {items: doc});
})
.catch(function(error){
console.log(error);
});
});
答案 1 :(得分:0)
我从来没有机会找出真正导致此问题的原因。一旦找出原因,我将更新答案。但这就是解决方法。
我的感觉是,哈巴狗在未初始化时会尝试使用“项目”。一旦在后续渲染中初始化,它将起作用。因此,尝试添加这样的条件运算符
a(href="/get-data") LOAD DATA
div
each val in items ? items : []
article(class="item")
div Title: #{val.title}
div Content: #{val.content}
当pug尝试使用未定义的项目渲染页面时,这不会简单地导致错误。
一旦找到原因,我将更新答案。希望我的胶带解决方案能为您完成工作。