在 ejs 模板文件中使用 mongoose 获取数据
Fetch data with mongoose in ejs template file
我想在我的 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)
mongoose 模型总是 returns 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 文件中获取我的数据库中的所有用户。我有 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)
mongoose 模型总是 returns 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