Как реализовать валидацию в отдельном файле с помощью экспресс-валидатора - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь использовать экспресс-валидатор для проверки req.body перед отправкой почтового запроса на вставку данных в postgres.

У меня есть файл маршрута, файл контроллера, и я хочу выполнить проверку в файле с именем validate.js. Тем временем я установил экспресс-валидатор, и в моем server.js я импортировал его. Другие ресурсы, с которыми я сталкиваюсь, реализуют проверку в функции, которая содержит логику для вставки данных.

//server.js
....
import expressValidator from 'express-validator';

...
app.use(bodyParser.urlencoded({ extended: false }));
app.use(expressValidator);

//route.js
import express from 'express';
import usersController from './controller';

const router = express.Router();

router.post('/createuser', usersController.createUser);

//controller.js
createUser(req, res){
 ...
const { firstName, lastName, email, password } = req.body;
//code to insert user details to the database
}

//validator.js
import { check } from 'express-validator/check';

module.exports = [check('email').isEmail()];

Я ожидаю реализовать проверку в файле validator.js, скажем, для проверки электронной почты перед вставкой в ​​базу данных

1 Ответ

0 голосов
/ 20 апреля 2019

Вот как я использую экспресс-валидатор.У меня есть файл validator.js, где у меня есть логика проверки для многих маршрутов.Например:

validator.js

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

exports.createUser = [check('email').isEmail()];

exports.anotherRoute = [// check data];

exports.doSomethingElse = [// check data];

Теперь в вашем файле маршрута вам нужен файл validator.js
const validator = require("./validator"); // or where your file is located
и используйтелогика проверки вы хотите в качестве промежуточного программного обеспечения.Например:

route.js

//

router.post('/createuser', validator.createUser, usersController.createUser);

Наконец, внутри вашего контроллера вы должны проверить возможные ошибки, возникшие во время проверки, после запроса validationResult.

controller.js

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


exports.createUser(req, res) {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        return res.status(422).json({ errors: errors.array() });
    }
    // do stuff here.

}

Кроме того, вам не нужно использовать app.use(expressValidator); в вашем файле server.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...