При создании пользователя, игнорируется проверка
Пытаюсь реализовать проверку полей при регистрации пользователя с помощью миддлвейра express-validator.
Сам middleware:
const express = require('express')
const {check, checkSchema} = require('express-validator')
const emailPattern = /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/
const app = express()
app.post('/auth', async (req, res, next) => {
if(req.method === 'OPTIONS'){
return next()
} try {
// const {firstName, secondName, email, password} = req.body
check('email')
.matches(emailPattern)
.withMessage("Неверный формат"),
check('password')
.isLength({min: 8})
.withMessage("Минимальная длина пароля - 8 символов")
next()
} catch (e){
res.status(500).json({message: "Что-то пошло не так"})
throw new Error (e)
}
})
module.exports = app
И роут к нему
const {Router} = require('express')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const auth = require('E:/client-system/server/middleware/AuthMiddleware')
const config = require('config')
const User = require('../models/User')
const router = Router()
router.post('/register', auth, async (req, res) => {
try{
const {firstName, secondName, email, password} = req.body
const candidate = await User.findOne({ email })
if(candidate) {
return res.status(400).json({message: "Такой пользователь уже существует"})
}
const hashPass = await bcrypt.hash(password, 12)
const user = new User({
firstName,
secondName,
email,
password: hashPass
})
await user.save()
res.status(201).json({message: "Пользователь создан"})
} catch (e){
res.status(500).json({message: "Что-то пошло не так"})
throw new Error(e)
}
})
module.exports = router
В Постман в body передаю json такого формата:
{
"firstName": "regUser1",
"secondName": "regUser1",
"email": "registerUser1",
"password": "registerUserPass"
}
Программа не видит ошибки несоответствия email и успешно создаёт пользователя в БД. Заранее спасибо!
Ответы (1 шт):
Автор решения: KirbyTwister
→ Ссылка
В общем, всё оказалось намного проще.
Достаточно было лишь применить метод test для моего emailPattern, и по итогу получить вот такую проверку:
const validEmail = emailPattern.test(email)
if(!validEmail){
return res.status(400).json({message: "Неверный формат"})
}