2017-02-13 10 views
0

Я обнаружил, что все мои методы используют одну и ту же логику в моем приложении. Таким образом, я хотел бы написать один ремонтопригодны функцию следующим образом:Ответ с JSON по запросу-обещание .catch() function

var handleError = function (error) { 
    if (error.statusCode == 401) { 
    res.json({ 
     'message': 'You\'re no longer logged in. Please check your settings and try again.' 
    }); 
    } else { 
    res.json({ 
     'message': 'Something when wrong and it wasn\'t your fault. Please try again.' 
    }); 
    } 
}; 

router.get('/test', function(req, res, next) { 
    request({ 
    uri: 'http://google.com/404' 
    }).then(function() { 
    console.log('It worked!'); 
    }).catch(handleError); 
}); 

Хотя это не работает, потому что функция handleError() не объект ответа произвольного доступа ExpressJS игровая. Как я могу вернуть JSON на страницу и сохранить все из одной функции?

ответ

1

В этом случае лучше всего написать промежуточное программное обеспечение для его обработки.

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

Вы можете узнать больше о express middleware on its homepage

Также см express-promise пакет