尝试使用 mongoose、express 和 ejs 将数据从 mongodb 显示到 html

问题描述 投票:0回答:1

截至目前,我可以将“测试”字符串打印到我的 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");
})
node.js mongodb express mongoose ejs
1个回答
0
投票

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>
<% } %>
© www.soinside.com 2019 - 2024. All rights reserved.