您的问题似乎是EJS语法,您应该在这里回顾一下:
EJS Docs
. 考虑以下测试项目结构:
.
âââ index.js
âââ package.json
âââ setup.js
âââ views
âââ index.ejs
âââ table.ejs
我用创建测试数据库
J.
所以我们有一些虚拟的帖子来显示:
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:8081/test", {
useNewUrlParser: true
});
const Post = mongoose.model("Post", {
title:String,
body: String
});
const toMake = [
{title: "hello", body: "world"},
{title: "foo", body: "bar"},
{title: "fizz", body: "buzz"},
{title: "a", body: "b"}
];
Post.insertMany(toMake)
.then(()=>{
console.log("done");
mongoose.connection.close();
})
.catch(err => console.error(err));
我创建一个EJS模板
视图/表
要将我的文章呈现为表格:
TitleBody
{ %>
然后我创建一个EJS模板
视图/索引
使用表格模板
Posts
我还创建了一个服务器来响应
索引文件
并运行它
node index.js
:
const express = require("express");
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:8081/test", {
useNewUrlParser: true
});
const app = express();
const Post = mongoose.model("Post", {
title: String,
body: String
});
app.set("view engine", "ejs");
app.get("/", async (req, res) => {
const posts = await Post.find({});
res.render("index", {posts});
});
app.listen(3000, () => console.log("Listening"));
当我
curl localhost:3000
我得到呈现的HTML:
Posts
TitleBody
helloworldfoobarfizzbuzzab无论怎样,我都需要将数据输入
res.render()
函数并用渲染所需的所有数据填充渲染范围。
但是,我已经
表EJS
可重复使用的。所以假设我有另一个页面,我希望能够以表格的方式显示一些文章。
我有另一个EJS模板:
视图/配置文件.ejs
看起来是这样的:
2 Posts
我在我的应用程序中添加了另一条路径
/sliced
:
app.get("/sliced", async (req, res) => {
const posts = await Post.find({});
res.render("profile", {posts});
});
每当我卷曲
localhost:3000/sliced
因为我只填充了
include
的作用域,包含所有文章的切片:
2 Posts
TitleBody
helloworldfoobar