Express Validator: Vlastní validační s asynchronní funkce

0

Otázka

Já jsem v současné době snaží ověřit některé vstupy v Vyjádřit pomocí express-validator. Vím, že je to typické předat jako samostatný middleware do trasy, ale potřeboval jsem přístup k res objekt, takže jsem musel napsat to tak, jak vidíte níže.

Ta část, která jsem zápasí s je custom validátor. Rád bych, aby to volání asynchronní funkce store.todoListTitleExists(title) že dotazy na databáze a zkontroluje, zda název již existuje. Pokud název neexistuje, můj záměr je zachránit se chybová zpráva, které jsem se později mohou zobrazovat jako flash zprávu.

V současné době, tento kód nebude fungovat. Díval jsem se na dokumentaci ale nemůžu přijít na to jak tohle udělat vlastní validátor + chybovou zprávu správně fungovat, protože to volání asynchronní funkce. Jakýkoliv pomoci chtěl bych být apprecated.

Díky!!!

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

Nejlepší odpověď

0

zkuste to

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

Express-validator je určen k dezinfekci a ověřit data odesílaná mezi klientem a serverem. Aby bylo možné zvládnout to takovým způsobem, že je škálovatelný, doporučil bych pomocí souboru zvládnout všechny vaše stránky požadavky post (něco jako routes.js pro příklad).

Zde je ukázka vlastní router, který zobrazí chybovou zprávu, pokud se nezdaří ověření :

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

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

        return true

    }),

Jakmile budete mít všechny izolované směrování do určitého souboru, můžete přidat argumenty, jako na příkladu níže pro chybové zprávy, které mají být podávaný s na stránku (personnaly používám ejs šablony, takže tyto chybové zprávy jsou zobrazeny pomocí následující kód :

**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

V jiných jazycích

Tato stránka je v jiných jazycích

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