2015-07-07 1 views
0

У нас есть такой экспресс.js маршрут с паспортом. Я заметил использование следующего обещания, однако, если я его удалю, мои тесты работают нормально, в любом случае, для 409 и 201 ответов. Любая идея, если это действительно необходимо в таком контексте:Использование следующего в паспорт.js и экспресс-маршрутизаторе

exports.signUp = (req, res, next) -> 
    passport.authenticate('local-signup', (err, user, next) -> 
    if err 
     res.status(409).send 
     status: 'Conflict' 
     error: 'Benutzername bereits vergeben' 
     type: 'warning' 
     return 
    else if user != false and user != '' 
     token = jwt.sign({ user: user }, secret.secretToken, expiresInMinutes: 60 * 60) 
     res.status(201).send 
     status: 'Created' 
     error: 'Benutzer erstellt' 
     type: 'success' 
     token: token 
     user: user 
    return 
) req, res, next 
    return 

примечание: это CoffeeScript

ответ

1

Если вы не используете его в функцию обратного вызова, переданного passport.authenticate, вы можете оставить его. Тем не менее, passport.authenticate сам, вероятно, понадобится для обработки определенных ситуаций (это предположение, я не зарылся в код паспорта, чтобы убедиться).

Так ваш может переписать код так:

exports.signUp = (req, res, next) -> 
    passport.authenticate('local-signup', (err, user) -> 
    ... 
) req, res, next 
    return 

Что не так много улучшение.

В качестве предупреждения: ваш код оставляет некоторые ситуации, когда ответ не отправляется, а именно, если user является ложным или пустой строкой (в этой ситуации вы просто return вместо отправки ответа).

+0

Хорошо, я вижу, мне придется в дальнейшем копать в паспорт.js. Что касается тщательного анализа - большое спасибо! – nottinhill

+0

Не могли бы вы добавить немного света для использования req res next triple в последних строках? – nottinhill

+1

@SirBenBenji 'passport.authenticate()' возвращает функцию (точнее, функцию промежуточного программного обеспечения), и эта функция впоследствии вызывается с аргументами 'req, res, next' в качестве аргументов. – robertklep

 Смежные вопросы

  • Нет связанных вопросов^_^