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