快速验证程序:定验证与异功能

0

的问题

目前,我正在试验一些投入,在表达利用 express-验证程序. 我知道这是典型的通过它作为一个独立的中间件进路线,但我需要的 res 对象,所以我不得不把它写在你的方式见下文。

一部分,我挣扎是的 custom 验证程序。 我想它叫异功能 store.todoListTitleExists(title) 可查询的数据库,并检查,如果一个标题已经存在。 如果标题并不存在,我的意图是要拯救一条错误消息,我可以稍后显示作为一个闪光信息。

目前,这种代码不起作用。 我已经看过的文件,但我似乎无法找出如何使这个定义验证程序+错误消息的正常工作,因为它要求一个异功能。 任何帮助将apprecated.

谢谢!

app.post("/lists/:todoListId/edit", 
    (req, res) => {
    let store = res.locals.store;
    let todoListId = req.params.todoListId;
    let title = req.body.todoListTitle;

    await body('todoListTitle')
          .trim()
          .isLength({ min: 1 })
          .withMessage("The list title is required.")
          .isLength({ max: 100 })
          .withMessage("The list title cannot be over 100 characters")
          .custom(store.todoListTitleExists(title).then(titleExists => {
            if(titleExists) return Promise.reject('Title already exists');
          }))
2

最好的答案

0

试试这个

body("feildName", "Feild must be selected")
.custom(value=> {

    titleExists=await store.todoListTitleExists(value)
    if(titleExists){
    Promise.reject('title exists')
    }
    return true


    return true

}),
2021-12-24 05:31:48
-1

快-验证程序的目的是净化和验证的数据被发送之间的客户和服务器。 为了处理这种方式是扩展,我建议使用一个文件处理所有的网站岗位的请求(喜欢的东西 routes.js 例如)。

这里是一样定路由器,显示错误信息,如果验证失败:

body("feildName", "Feild must be selected")
    .custom(val => {

        if (val.feildName == "Select...") return false

        return true

    }),

一旦你必须隔离所有的路由选择一个特定的文件,可以添加参数,如下面的例子中的错误消息,以提供的网页(personnaly我用ejs模板,以便这些错误信息,显示使用下列代码:

**controller.js**
    const errors = validationResult(req);
    const {
        body
    } = req;

    if (!errors.isEmpty()) {
        return res.render('index', {
            error: errors.array()[0].msg
        });
    }

    res.render("index");

**index.ejs**
<div class="error">
        <% if(typeof error !== 'undefined'){ %>
              <div class="err-msg"><%= error %></div>
        <% } %>
</div>
2021-11-23 19:09:05

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................