簡體   English   中英

如何確保此函數正確處理錯誤?

[英]How can I make sure that this function handles errors properly?

我有一個檢查快速應用程序中用戶輸入的功能。 我不想使用任何庫來驗證這些輸入,所以我聲明了一個將錯誤推入其中的數組。

我已經將中間件功能作為靜態方法嵌入到類中...

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(); 

     }

如何實現以下目標?

  • 將提供的輸入字段中的值轉換為小寫並修整。
  • 如果有錯誤,請返回所有錯誤。
  • 如果沒有錯誤,則將操作轉移到下一個函數,而不是返回空數組。

您只是缺少一種情況:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM