验证错误导致应用程序崩溃

时间:2016-02-29 09:25:06

标签: node.js mongoose koa

我使用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;
      }
    })
  });

1 个答案:

答案 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;

});