2015-02-15 2 views
0

Я настраиваю регистрацию пользователя в приложении MEAN. Тем не менее, я борюсь с обработкой ошибок, особенно с проверкой Mongoose.Исключение проверки мандата Mongoose не обнаружено

В следующем коде, когда я предоставляю неправильное письмо моему API, исключение, созданное mongoose, не попадает в мой блок.

try { 
    User.save(function (err, user) { 
     if (err) throw err; //This exception in not catched :(

     res.status(200).json({ 
      _status: 200, 
      _content: { 
       message: "OK", 
       data: user 
      } 
     }); 
    }); 
} catch (err) { 
    res.status(400).json({ 
     _status: 400, 
     _content: { 
      message: err.toString() 
     } 
    }); 
} 

Как я могу поймать это исключение?

+0

Можете ли вы проверить, что возвращает ваше err, выполнив console.log (err); внутри вашего обратного вызова User.save – Yalamber

+0

Привет, строки первой строки консоли выводят меня так: 'if (err) throw err; ^ ValidationError: Это электронное письмо недействительно. – Arnaud

+0

Вам нужно будет использовать try catch внутри вашего обратного вызова. – Yalamber

ответ

1

почему бы вам не сделать это таким образом, вместо того, чтобы:

User.save(function (err, user) { 
    if (err) { 
    return res.status(400).json({ 
     _status: 400, 
     _content: { 
      message: err.toString() 
     } 
    }); 
    } 
    res.status(200).json({ 
    _status: 200, 
    _content: { 
     message: "OK", 
     data: user 
    } 
    }); 
}); 

Ваш код не будет работать, потому что попытка поймать не сможет перехватывать исключения внутри обратного вызова.

+0

Спасибо за помощь, я сделаю так! – Arnaud