我使用Koa和Mongoose作为我的REST API。我的目标是使用适当的状态代码和错误消息进行响应。但是,应用程序在ValidationError上兑现,电子邮件是必填字段,但未在此请求中给出。如何使用500以外的状态代码进行回复。
router.post('/user/', function *() {
var user = new User(this.request.body);
yield user.save((error) => {
if (error) {
//Does not respond with a 404
this.status = 404;
} else {
this.status = 201;
this.response.body = user;
}
})
});
答案 0 :(得分:1)
使用yield
的一个好处是,您可以使用try {} catch() {}
,就像编写同步代码一样。
所以你的代码变成了:
router.post('/user/', function *() {
var user = new User(this.request.body);
try {
yield user.save();
}
catch (err) {
//Does not respond with a 404
this.status = 404;
}
this.status = 201;
this.response.body = user;
});