這是我的代碼。我想檢查名稱是否是字母并且有超過 2 個字符,但此代碼不會產生任何錯誤。
const {body, validationResult} = require('express-validator');
function nameValidation(req, res, next){
body('name').trim().isLength({ min: 1 }).withMessage('Name empty.')
.isLength({ min: 3 }).withMessage('Name must contain min 2 letters.')
.isAlpha().withMessage('Name must be alphabet letters.');
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
next();
}
uj5u.com熱心網友回復:
確實,因為您在 post 方法獲取請求資料后進行了驗證。您需要做的是首先進行驗證。
app.post(
'/users',
body('name').trim().isLength({ min: 1 }).withMessage('Name empty.')
.isLength({ min: 3 }).withMessage('Name must contain min 2 letters.')
.isAlpha().withMessage('Name must be alphabet letters.'),
(req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
else{
res.send('Success')
}
},
);
更新
根據您的評論,我更新了我的答案以使用該中間件作為引數
const express = require('express')
const app = express()
const port = 3000
app.use(express.json())
const { check, validationResult } = require('express-validator');
const validateUser = [
check('name')
.trim()
.escape()
.not()
.isEmpty()
.withMessage('User name can not be empty!')
.bail()
.isLength({ min: 3 })
.withMessage('Minimum 3 characters required!')
.bail()
.isAlpha()
.withMessage('Name must be alphabet letters.')
.bail(),
check('email')
.trim()
.normalizeEmail()
.not()
.isEmpty()
.withMessage('Invalid email address!')
.bail(),
(req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty())
return res.status(400).json({ errors: errors.array() });
next();
},
];
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.post(
'/users',
validateUser,
(req, res, next) => {
res.send('Success')
},
);
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
uj5u.com熱心網友回復:
在第一個答案的幫助下,我找到了適合我的案例的正確解決方案,這里是:
const express = require('express')
const router = express.Router()
const {body, validationResult} = require('express-validator');
const nameValidation =
body('name').trim().isLength({ min: 1 }).withMessage('Name empty.')
.isLength({ min: 3 }).withMessage('Name must contain min 3 letters.')
.isAlpha().withMessage('Name must be alphabet letters.');
router.post('/new', nameValidation, poneNumberValidation, (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array()});
}
const contact = req.body;
contact.id = getRandomId();
contacts.push(contact);
res.redirect("/contacts");
res.render("index", {contacts});
})
PS:poneNumberValidation 和 getRandomId 是我在代碼中實作的函式,它們與這個問題無關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/436974.html
