node.js - page.forEach() 不是函数

标签 node.js express ejs

我正在尝试在 Node.js 应用程序中显示 mongodb 数据库中的项目列表。我使用 ejs 作为模板引擎。我在页面上遇到以下错误:

enter image description here

路由器代码:

const express = require('express');
const router = express.Router();

// Get page model
var Page = require('../models/page');

// GET page index
router.get('/', function(req, res) {
    Page.findOne({}).sort({sorting: 1}).exec(function(err, pages) {
        res.render('admin/pages', {
            pages: pages
        });
    });
});

EJS 代码:

<%- include('../_layouts/adminheader') %>

<h2 class="page-title">Pages</h2>
<a href="/admin/pages/add-page" class="btn btn-primary">Add a new page</a>
<br><br>

<table class="table table-striped">
    <thead>
        <tr>
            <th>Title</th>
            <th>Edit</th>
            <th>Delete</th> 
        </tr>
    </thead>
    <tbody>
        <% pages.forEach(function(page) { %>
            <tr>
                <td><%= page.title %></td>
                <td><a href="/admin/pages/edit-page/<%= page.slug %>">Edit</a></td>
                <td><a href="/admin/pages/edit-page/<%= page._id %>">Delete</a></td>
            </tr>
        <% }); %>
    </tbody>
</table>

<%- include('../_layouts/adminfooter') %>

最佳答案

您应该替换 . findOne()通过 .find().findOne() 仅返回一个 page 对象,而 .find() 返回一组对象:

Page.find({}).sort({sorting: 1}).exec(function(err, pages) {
    res.render('admin/pages', {
        pages: pages
    });
});

关于node.js - page.forEach() 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48368079/

相关文章:

javascript - 使用 Mongoose 处理六个文档后,我得到 "Failed to load resource: net::ERR_EMPTY_RESPONSE"

node.js - 使用 node.js 标准环境在 AppEngine 上找不到模块@google-cloud/firestore

mongodb - (Node.js/Express.js) 错误 : Schema hasn't been registered for model "document"

javascript - 如何在expressjs应用程序中拒绝http请求?

javascript - 如何在 Hexo 中按标签过滤帖子?

css - EJS 模板中是否有 CSS 的标准模式?

node.js - 将 JSON var 从路由传递到 ejs

angularjs - Node JS MongoDB POST 错误

node.js - 将多个文件发送到 git 存储库

web - 从 Harp.js 中的 EJS 模板调用另一个文件上的 javascript 函数