0

我有一个自定义检查快速验证器,它查看输入的字段是否在数据库中是正确的,或者它是否是唯一的。如果我像这样将它放在中间件中,它可以工作:

const { check, validationResult } = require('express-validator/check');

router.post('/post', upload, [
    check('cat')
        .custom((value) => {
            return new Promise((resolve, reject) => {
                connection.query(`SELECT id FROM cat WHERE cat_name = ?`, [value], (err, results) => {
                        if(results[0] == null)
                            reject(new Error('This topic does not exist or is misspelled.'));
                    
                        else 
                            resolve(true);
                    });
                });
            }),
], async (req, res) => { // ... }

但我想在这样的函数内部使用它:

... {
req.check('cat')
        .custom((value) => {
            return new Promise((resolve, reject) => {
                connection.query(`SELECT id FROM cat WHERE cat_name = ?`, [value], (err, results) => {
                    if(results[0] == null)
                        reject(new Error('This topic does not exist or is misspelled.'));
                    else 
                        resolve(true);
                });
            });
        });
   ... }

第一个有效,但第二个不返回任何内容。我尝试向它添加异步等待,但它不会改变结果。像这样的其他检查适用于:

req.check('username', 'This username is invalid.')
        .exists()
        .isLength({min: 3, max: 22})
        .trim()
        .escape();
4

0 回答 0