2017-02-17 7 views
0

У меня есть обработчик маршрута, для которого требуется передать некоторые данные (car.name) для обслуживания его функции.Обработка отсутствующих данных в вызове API

carRouter.route('/create') 
    .post(carController.create) 

function create(req, res, next) { 
    const carInstance = new carModel({ 
    activated: false, 
    name: body.car.name, 

Если нет body.car.name, то экспресс-авария.

я мог бы справиться с этим, добавив следующую проверку:

if (body.car.name) { 
    function create(req, res, next) { 

Но это быстро становится громоздким с большим количеством свойств модели.

У меня уже есть настройка проверки в моем CarSchema, поэтому я бы хотел делегировать проверку на mongoose и избежать сбоя приложения, если в запросе отсутствуют данные.

Я рассмотрел довольно много примеров реального мира на github, чтобы попытаться найти, как это обрабатывается, со смешанными результатами.

Что такое правильный подход к решению этой основной ситуации?

+0

Если данные отсутствуют, то, что вы хотите, чтобы результат вызова API быть? – jfriend00

+0

@ jfriend00 Я хотел бы вернуть 40 * – softcode

ответ

2

TypeError быть брошенным для попытки чтения прав не-объекта? Может быть, это помогает:

name: body.car ? body.car.name : null 

Или, если вы не заботитесь о name быть undefined:

name: body.car && body.car.name 
+0

Что делать, если 'body.car' существует, но' body.car.name' нет? – softcode

+0

Quering несуществующие свойства в порядке, это JS, но не запрашивает свойства несуществующих объектов. 'body.car.name' просто оценивает' undefined'. – pttsky

+0

Хорошо. 'body' всегда будет существовать? – softcode