我在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}
所以我的问题是,如何向客户端传达有意义的信息?
答案 0 :(得分:0)
您可以使用以下内容:
return res.status(statusCode).send({ error : err.message });
答案 1 :(得分:0)
我发现findOne查询中的错误找到了一个以上的结果,这意味着它是操作错误。