在 ejs 模板文件中使用 mongoose 获取数据
Posted
技术标签:
【中文标题】在 ejs 模板文件中使用 mongoose 获取数据【英文标题】:Fetch data with mongoose in ejs template file 【发布时间】:2021-10-22 11:13:44 【问题描述】:我想在我的 ejs 文件中获取我的数据库中的所有用户。我有 3 个文件,一个模型用于数据,一个 ejs 文件和一个 js 文件用于我的路线。问题是我没有显示任何错误。我的浏览器上只呈现了一个空列表,就好像数据库中没有用户一样。有人可以帮我吗?
这是我的路由 js 文件:
import express from 'express';
import User from "../models/user.js"
const routerUserList = express.Router();
routerUserList.get('/user-list', function(req, res, next)
try
const users = User.find();
res.render('user-list',
pageTitle: 'Liste des utilisateurs',
path: '/user-list',
users: users
)
catch (error)
res.status(500).json(message : "Une erreur est survenue")
)
export default routerUserList
这是我的 ejs 文件:
<%- include('./includes/head.ejs') %>
</head>
<body>
<%- include('./includes/navigation.ejs') %>
<main>
<h1>Liste des utilisateurs</h1>
<% for(var i=0; i < users.length; i++) %>
<li><%= users[i]._id %></li>
<li><%= users[i].name %></li>
<li><%= users[i].email %></li>
<% %>
</main>
<%- include('./includes/end.ejs') %>
这是我的模型文件:
import mongoose from 'mongoose'
const userSchema = mongoose.Schema(
name: type: String, required: true,
email: type: String, required: true,
password: type: String, required: true,
id: type: String
)
export default mongoose.model("User", userSchema)
【问题讨论】:
【参考方案1】:mongoose 模型总是返回 Promise,你应该解决这个 Promise 以获得一个实际的用户数组。 更新后的代码将如下所示。
import express from 'express';
import User from "../models/user.js"
const routerUserList = express.Router();
routerUserList.get('/user-list', async function(req, res, next)
try
const users = await User.find();
res.render('user-list',
pageTitle: 'Liste des utilisateurs',
path: '/user-list',
users: users
)
catch (error)
res.status(500).json(message : "Une erreur est survenue")
)
export default routerUserList
【讨论】:
以上是关于在 ejs 模板文件中使用 mongoose 获取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Nodejs/mongodb/mongoose 在 ejs/html 中显示数据库项目?
无法读取未定义的属性“名称” - mongoose、express、nodeJS、ejs