我是非常新的编程,我试图选择,然后显示图像的3个最近创建的书籍在我的数据库,但当我排序的createdAt,图像将不再显示。
这是用于显示图像的ejs:
<% for(let r of recentBooks) { %>
<img class="recentBooks cover" src=" <%= r.covers[0].url %>" alt="">
<% } %>
这是显示图像的find版本,但不显示最近三本书的图像:
app.get('/', async (req, res) => {
const recentBooks = await Book.find().limit(3);
console.log(recentBooks);
res.render("home", { recentBooks })
})
这是查找版本,给予我一个“无法读取未定义的属性(阅读'url')”错误:
app.get('/', async (req, res) => {
const recentBooks = await Book.find().sort({ createdAt: -1 }).limit(3);
console.log(recentBooks);
res.render("home", { recentBooks })
})
为什么会发生这种情况,我能做些什么来修复它?谢谢
1条答案
按热度按时间kmynzznz1#
假设您已经在Mongoose中正确地设置了
Book
模型,并且已经将createdAt
字段定义为Date
类型,那么您的查询看起来很好。您收到的错误
"Cannot read properties of undefined (reading 'url')"
表示covers
数组为空或未定义,至少recentBooks
数组中有一本书。要解决这个问题,您可以添加一个检查,以确保在尝试访问
url
属性之前covers数组不为空。