截至目前,我可以将“测试”字符串打印到我的 html 页面。但是我无法让它从我的数据库中打印数据,并且它没有抛出任何类型的错误。
我试图让它从我的数据库中列出数据到我的 html 页面,以查看我正在从要显示的数据库中提取信息。实际结果是我可以看到我的“测试”打印,但这就是我在网页上看到的所有内容。
index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial
scale=1.0">
<title>Document</title>
</head>
<body>
<%clinicsList.forEach(function(clinic){ %>
<p><%= clinic.name %></p>
<%})%>
<h1><%= userName %></h1>
</body>
</html>
server.js
const express = require("express");
const mongoose = require("mongoose");
const ejs = require("ejs");
const app = express();
app.set("view engine", "ejs");
mongoose.connect("");
const clinicSchema = {
name: String,
directions: String,
telephone: String,
website: String,
address: String,
}
const Clinic = mongoose.model("Clinic", clinicSchema);
app.get("/", function (req, res) {
Clinic.find({}, function(err, clinicsList) {
res.render("index", {
clinicsList: data,
userName: "Test"
})
})
})
app.listen(8080, function() {
console.log("Server is running on port 8080");
})
将
render
参数更改为:
app.get('/', function async (req, res) {
try {
const clinicsList = await Clinic.find({});
res.render('index', {
clinicsList,
userName: 'Test',
});
} catch (err) {
res.send('Something went wrong');
}
});
此外,在 EJS 中添加检查以检测是否在渲染之前定义了
clinicsList
:
<%if (clinicsList) { %>
<%clinicsList.forEach(function(clinic){ %>
<p><%= clinic.name %></p>
<%})%>
<% } else { %>
<p>Loading...</p>
<% } %>