首页 > 解决方案 > 在 ejs 模板文件中使用 mongoose 获取数据

问题描述

我想在我的 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)

标签: node.jsmongodbmongooseejs

解决方案


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

推荐阅读