Как использовать express-validator
Установлен: node.js, express
главный файл:
const adminRouter = require("./routes/adminRouter.js"),
app.use("/admin/", adminRouter);
adminRouter.js
const adminController = require("../controllers/adminController.js"),
adminRouter = express.Router();
adminRouter.use("/login", adminController.postLogin);
adminRouter.use("/addnews", adminController.postNewsAdd);
module.exports = adminRouter;
adminController.js
exports.postLogin = function(request, response){
if ( !request.body.login || request.session.admin ) return response.sendStatus(400);
let login = request.body.login,
password = request.body.password;
});
};
exports.postNewsAdd = function(request, response){
if(!request.body.title_news || !request.session.admin) return response.sendStatus(400);
let title_news = request.body.title_news,
text_news = request.body.text_news;
};
как нужно использовать express-validator при такой структуре?
Ответы (2 шт):
Автор решения: webexpensive
→ Ссылка
Проблема решена.
Помогла статья: Проверка на основе схемы с использованием экспресс-валидатора в Node.js
Автор решения: Alialisk
→ Ссылка
Ваш adminRouter.js:
const adminController = require("../controllers/adminController.js"),
adminRouter = express.Router();
adminRouter.use("/login", adminController.postLogin);
adminRouter.use("/addnews", adminController.postNewsAdd);
module.exports = adminRouter;
Валидацию прописываете как и любой middleware, между роутом и самим контроллером:
const adminController = require("../controllers/adminController.js"),
adminRouter = express.Router();
adminRouter.use("/login", [
check('ключ из модели', "описание ошибки").isEmpty();
// isEmpty означает "пустой", т.е ничего не содержит
// Если ключ модели ничего не будет содержать,
// то выдаст описание ошибки
],
adminController.postLogin);
adminRouter.use("/addnews", adminController.postNewsAdd);
module.exports = adminRouter;
Далее вы можете дописать валидацию в контроллере:
// Импортируйте validationResult
// const { validationResult } = require('express-validator')
exports.postLogin = function(request, response){
// В переменную errors помещаете результат валидации.
// Для этого помещаете в качестве аргумента response
const errors = validationResult(request)
// Если константа ошибки не пуста (применяется оператор инверсии)
if (!errors.isEmpty) {
// выдается статус 400 и ответ сервера.
response.status(400).json({message: 'произошла ошибка'})
}
if ( !request.body.login || request.session.admin ) return response.sendStatus(400);
let login = request.body.login,
password = request.body.password;
});
};