ReferenceError: " postIts.forEach(function(postit)" on list.ejs? postIts is not defined at eval (eval at compile

ReferenceError: " postIts.forEach(function(postit)" on list.ejs? postIts is not defined at eval (eval at compile

我需要循环遍历 object PostIts 并使用 sails.js "1.2.3" 使用 ejs "forEach" Loop Am 显示 "Id", " Title"和 mongodb 在本地主机上,但我收到错误

ReferenceError : postIts is not defined at eval (eval at compile ?

这是 PostItsController.js 上的代码:

module.exports = {

    list: function(req, res) {
        // res.view('list');
        PostIts.find({}).exec(function(err, postIts) {
            if (err) {
                res.send(500, { error: 'Database Error' });
            }
            res.view('list', { postIts: postIts });
        });
    }
};

这里是 list.ejs 上的代码:

     <tbody>
       <% postIts.forEach(function(postit){ %>
            <tr>
                <td>
                    <%= postit.id %>
                </td>
                <td>
                    <%= postit.title %>
                </td>
                <td></td>
            </tr>
            <% }) %>
       </tbody>

我应该在 table 中获取显示在 list.ejs 页面上的 ID 和标题的值,但我却收到一个错误,指出未定义 postIts object。

如果您确定 res.view('list', { postIts: postIts }); 确实发送了正确的数据,您可以改用 _.each(postIts, cb()) ...

首先你的路线 '/postIts/list': { view: 'list' }, 应该指向一个动作(因为它有后端逻辑)而不是一个视图,所以在你的情况下 "/postIts/list": "PostItsController.list",但是如果你使用的是 actions2 东西会更简单

其次你不需要告诉你的用户你有一个数据库错误error: "Database Error"

使用 Actions2

sails generate action post/list

在你的config/route.js

 'POST /api/v1/post/list': { action: 'post/list' },

在你的行动中

module.exports = {
  friendlyName: "List Posts",

  description: "List all post in our site",

  inputs: {},

  exits: {
    success: {
      description: "The path to your template file",
      viewTemplatePath: "list"
    }
  },

  fn: async function(inputs) {
    var posts = await Post.find();
    // All done.
    return { postIts: posts };
  }
};

postit works

嘘!有用 https://sailsjs.com/documentation/concepts/actions-and-controllers/routing-to-actions

出于某种原因,post它的对象没有保存我提出的 post 请求中的数据,而是它只是回忆了我 post 编辑的内容。我使用了'_.each(postIts, function (postit)',它终于起作用了。

对我来说,这就像发生了魔法哈哈哈,但是是的,我从中学到了东西。

感谢@Navicstein Rotciv 的快速回复。