Как я могу убедиться, что эта функция правильно обрабатывает ошибки? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть функция, которая проверяет ввод пользователя в экспресс-приложении. Я не хочу использовать какую-либо библиотеку для проверки этих входных данных, поэтому я объявил массив, в который помещаются ошибки.

Я встроил функцию промежуточного программного обеспечения как статический метод в классе ...

static postAdchecker(req, res, next) {
        let { state, price, manufacturer, model, bodytype } = req.body;
        console.log('req', req.body);
         const errors = [];

         // If state is empty or undefined throw this error
         if (!state) {
             console.log('state', state);
             const error = {
                 message: 'Please specify the state of the car'
             };
             errors.push(error);
         }

         // If state is supplied, convert it to lowercase, trim and check if value is new/used
         if (state.toLowerCase().trim() !== 'new' && state.toLowerCase().trim() !== 'used') {
            const error = {
                message: 'State can only be new or used'
            };
            errors.push(error);
        }

        // Same goes for the others.
        if (!price) {
            const error = {
                message: 'You will need to specify a sale price'
            };
            errors.push(error);
        }

        if (!manufacturer) {
            const error = {
                message: 'Specify a manufacturer'
            };
            errors.push(error);
        }

        if (!model) {
            const error = {
                message: 'Specify a model'
            };
            errors.push(error);
        }

        if (!bodytype) {
            const error = {
                message: 'You will need to specify a bodytype'
            };
            errors.push(error);
        }

        return res.status(400).json({
            status: 400,
            errors: { 
                body: errors.map(err => err.message) 
               }
        });

         console.log('errors', errors);
         req.body.state = state.toLowerCase().trim();
         req.body.price = price.toLowerCase().trim();
         req.body.manufacturer = manufacturer.toLowerCase().trim();
         req.body.model = model.toLowerCase().trim();
         req.body.bodytype = bodytype.toLowerCase().trim();
         // req.authData;
         return next(); 

     }

Как мне достичь следующего?

  • Преобразуйте значения в поле ввода в нижний регистр и обрежьте их при наличии.
  • Если есть ошибки, вернуть все ошибки.
  • Если ошибок нет, передайте операцию следующей функции вместо возврата пустого массива.

1 Ответ

1 голос
/ 22 мая 2019

Вам не хватает одного условия:

 if(errors.length) { // <<<
   return res.status(400).json({
        status: 400,
        errors: { 
            body: errors.map(err => err.message) 
           }
      });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...