如何使用Mongoose和Promisify解压缩此错误?

时间:2016-01-13 10:29:30

标签: node.js mongodb mongoose promise

我在Mongoose和Promisify中有这个

这是预保存条件 - 我检查暂停(超时),然后加一个好的

//check if there is a pause for this id
HonkSchema.pre('save', function(next) {
  var query  = Pause.where({ id: this.id }).findOneAsync()
    .then(function(res){
        if(res) {

          var e = new Error('Not 5 Minutes')
          next(e)
        }//else {
          next()
        //}
    })
    .catch(function(err){
      console.log(err)
      var err = new Error(err);
      next(err);
    })
});

//Add pause
HonkSchema.pre('save', function(next) {
  Pause.createAsync({id: this.id})
    .then(function(res){
      next()
    })
    .catch(function(err){
      console.log(err)
      var err = new Error(err);
      next(err);
    })
});

我创建了一个像这样的新

// Creates a new Honk in the DB
export function create(req, res) {
  Honk.createAsync(req.body)
    .then(responseWithResult(res, 201))
    .catch(handleError(res, 412));
}

handleError执行此操作

function handleError(res, statusCode) {
  statusCode = statusCode || 500;
  return function(err) {
    console.log(err)
    res.status(statusCode).send(JSON.stringify(err));
  };
}

上面的日志消息给出了

{ [Error: Not 5 Minutes] cause: [Error: Not 5 Minutes], isOperational: true }

但是客户端的错误消息是

{"cause":{},"isOperational":true}

所以我的问题是,如何向客户端传达有意义的信息?

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

return res.status(statusCode).send({ error : err.message });

答案 1 :(得分:0)

我发现findOne查询中的错误找到了一个以上的结果,这意味着它是操作错误。