Как использовать 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 шт):

Автор решения: 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;

    });
    
};
→ Ссылка