2016-04-16 4 views
1

У меня есть этот кусок кода:Koajs как отправить ответ JSon

router.post('/register', function *(next) { 
    User.create(this.request.body, function(err, data) { 
    this.type = 'json'; 
    if (err) { 
     return this.body = err; 
    } 
    return this.body = data; 
    }); 
}); 

Но я получаю 404 ошибку (я предполагаю, что это потому, что router.post возвращается мгновенно и не ждать обратного вызова. Как я могу получить ответ изнутри обратного вызова, так что я не получаю 404.

ответ

0

Я не знаю, как вы пишете свою модель пользователя. Но вы не должны использовать обратный вызов здесь.

Это должно сработать, если у вас нет app.on('error'). Если вы это сделаете, вы можете удалить блок захвата try и просто иметь this.body = yield User.create(this.request.body)

router.post('/register', function *(next) { 
    try { 
    this.body = yield User.create(this.request.body) 
    } catch (err) { 
    this.body = err 
    } 
}) 
Смежные вопросы