首页 > 解决方案 > 将值从控制器传递到模板引擎 - MVC 和 EJS

问题描述

我正在尝试迭代用户列表并将其返回给模板引擎。出于某种原因,我收到一个错误,即对象不可迭代。

这是我的控制器:

const Bug = require('../models/bugs');
const bodyParser = require('body-parser');
const User = require('../models/user');



exports.getAddBug = (req, res, next) =>{
    res.render('add-bug', {
        pageTitle: 'Add a bug',
        path: '/add-bug',
        user: req.session.user.fullName,
        allUsers : User.find()
    }

)};

有一个 EJS 文件,所有用户值都应传递到该文件:

<ion-item>
                            <% for (let user of allUsers) { %>
                            <ion-label>Assigned to</ion-label>
                            <ion-select name="assignedTo" placeholder="Select One">
                                <ion-select-option selected value="<%= user.fullName%>"><%= user.fullName%></ion-select-option>
                            </ion-select>
                            <% } %>
                        </ion-item>

标签: javascriptnode.jsexpressejs

解决方案


返回你的 User.find() 一个承诺?如果是这样,请让您的 getAddBug 成为异步函数并像这样等待 User.find() :

exports.getAddBug = async (req, res, next) =>{
    res.render('add-bug', {
        pageTitle: 'Add a bug',
        path: '/add-bug',
        user: req.session.user.fullName,
        allUsers : await User.find()
    }
)};

我希望这会有所帮助。


推荐阅读