哈巴狗不迭代对象数组

pug doesn't iterate array of object

我正在使用 express-validator,当我记录错误时,一切正常:

 errors:
   [ { value: '',
       msg: 'Email Field is empty',
       param: 'email',
       location: 'body' },
     { value: '',
       msg: 'Your email is not valid',
       param: 'email',
       location: 'body' } ] }

在我的 register.pug 视图中:

   if(errors)
      .alert.alert-danger
          ul.mb-0
             each error in errors
                li=error.msg

这是我的路线:

router.post(
  "/register",
  [
    check("email")
      .notEmpty()
      .withMessage("Email Field is empty"),
    check("email")
      .isEmail()
      .withMessage("Your email is not valid")
  ],
  function(req, res) {
    const errors = validationResult(req);
    res.render("register", { errors });
  }
);

这是输出: output image

它不显示错误消息。 你能帮帮我吗?

我不确定这是否是一个问题,但我通常这样做:

res.render("register", { "errors": 错误 });

然后:

li=#{error.msg}

根据你的 console.log 我认为 errors 变量是一个包含键 errors.

的对象

所以当您执行 each error in errors 时,error 等于 errors 数组,因为循环索引到对象而不是数组。

这意味着您必须将 res.render 更改为 res.render("register", errors);res.render("register", { errors: errors.errors });