【发布时间】:2020-12-30 10:00:36
【问题描述】:
我正在尝试遍历我的产品数据库中的产品,并将每个产品作为自己的卡片显示在我的网站上。 db 包含 2 个项目,它们不会显示在页面上,但是,当我控制台记录它们时,这些项目会显示在控制台中。
这是我的控制器代码:
exports.getShop = (req, res, next) => {
Product.find(products => {
res.render('shop/shop',{
products: products,
path:'/shop',
pageTitle:'Shop'
})
})
.then(products => {
console.log(products);
})
.catch(err => {
console.log(err);
})};
这是我的 html/ejs:
<% if (products) { %>
<div class="grid">
<% for (let product of products) { %>
<article class="card product-item">
<header class="card__header">
<h1 class="product__title">
<%= product.title %>
</h1>
</header>
<div class="card__image">
<img src="/<%= product.image %>" alt="<%= product.title %>">
</div>
<div class="card__content">
<h2 class="product__price">$
<%= product.price %>
</h2>
<p class="product__description">
<%= product.description %>
</p>
</div>
</article>
<% } %>
</div>
<% } else { %>
<h1>No Products Found!</h1>
<% } %>
就像我说的,控制台会在我的数据库中显示产品,但页面输出是“未找到产品!”如果我稍微更改代码,在“products.length”处加载页面时会出错
修改代码:
<% if (products.length > 0 ) { %>
<div class="grid">
<% for (let product of products) { %>
错误提示“无法读取 null 的属性”。
我在这里错过了什么?
【问题讨论】:
-
您将产品发送到哪里的 HTML 文件?
-
什么意思? `res.render('shop/shop', { ...products: products...} 应该可以被 ejs 读取,不是吗?
-
哦,我明白了,错过了,愚蠢的我......
标签: node.js mongodb model-view-controller callback ejs