新的Web开发人员在这里;我正在使用Mongo / Express / Node。
我正在尝试创建一个电子商务站点,管理员将在其中创建新的“类别”并将其添加到数据库中。
每当将一个新的“类别”添加到数据库中时,我都希望为该类别(以及数据库中的所有其他类别)创建一个新的EJS页面,然后将加载所有属于以下类别的“产品”该EJS页面中的该类别。
类别页面应符合模板;仅更改其名称和加载到其中的产品。
类似这样的东西:
<html>
<body>
<nav>
<h2>Categories</h2>
<div class="menu">
<a>Men</a>
<a>Women</a>
<a>Children</a>
</div>
</nav>
<% products.forEach(function(product) { %>
<% if (product.category === x) { %>
<h5><%= product.name %></h5>
<img src='someurl'>
<% } %>
<% }) %>
</body>
</html>
谢谢。
答案 0 :(得分:1)
幸运的是,您不需要动态创建EJS文件。您可以使用parameterised route matching,然后在EJS页面的render函数中返回该类别的正确数据。这就是使用动态网页的美妙之处!
server.js
const express = require("express");
const app = express();
app.get("/example/:category", (req, res) => {
let { category } = req.params;
let products = /* search db for category that matches that "category" var */;
res.render("products.ejs", { products });
});
products.ejs
...
<% products.forEach(product => { %>
<h5><%= product.name %></h5>
<img src="<%= product.imageURL %>">
<% }); %>
...
例如,如果用户访问/example/food
,则category
变量参数将等于"food"
。然后,您可以将其传递给EJS渲染函数。