express-restify-mongoose 错误传播
express-restify-mongoose error propogation
我在使用 express-mongoose-restify 提供错误消息时遇到问题。
我的架构有一个像
这样的钩子
myschema.pre('save', function(next){
// If validation fails
next(new Error('failed to validate model'))
})
对于错误处理,我有(类似于)以下代码
resify.serve(express.Router(), mongoose.model('myschema', {
onError: function(err, req,res,next){
console.log(err)
res.status(400).json(err)
}
})
验证失败时控制台输出如下:
{ [Error: failed to validate model] statusCode : 400 }
在我的客户端中,我有以下 (jquery) ajax 错误处理程序:
$( document ).ajaxError(function( event, jqxhr, settings, thrownError ) {
console.log(jqxhr)
console.log(thrownError)
});
thrownErorr
等于 "Bad Request"
并且 jqxhr
对于 responseJSON 具有 reseponseText: "{"statusCode" : 400}"
相似(但解析为 JS)。消息 failed to validate model
未发送到客户端。我认为我误解了 err
在我的服务器端错误处理程序中的对象类型。有什么想法吗?提前致谢!
在这种情况下,写问题让我想到了正确的问题来问自己以便回答它。
节点使用的V8错误对象在转换为JSON时不发送堆栈、消息等附加信息。通过阅读 Error
对象 here.
的属性,我的问题得到了解决
特别是使用以下处理程序,错误已成功中继到客户端
onError : function(err, req, res, next){
res.status(400).json({
message : err.message,
stack : err.stack
})
}
我在使用 express-mongoose-restify 提供错误消息时遇到问题。
我的架构有一个像
这样的钩子myschema.pre('save', function(next){
// If validation fails
next(new Error('failed to validate model'))
})
对于错误处理,我有(类似于)以下代码
resify.serve(express.Router(), mongoose.model('myschema', {
onError: function(err, req,res,next){
console.log(err)
res.status(400).json(err)
}
})
验证失败时控制台输出如下:
{ [Error: failed to validate model] statusCode : 400 }
在我的客户端中,我有以下 (jquery) ajax 错误处理程序:
$( document ).ajaxError(function( event, jqxhr, settings, thrownError ) {
console.log(jqxhr)
console.log(thrownError)
});
thrownErorr
等于 "Bad Request"
并且 jqxhr
对于 responseJSON 具有 reseponseText: "{"statusCode" : 400}"
相似(但解析为 JS)。消息 failed to validate model
未发送到客户端。我认为我误解了 err
在我的服务器端错误处理程序中的对象类型。有什么想法吗?提前致谢!
在这种情况下,写问题让我想到了正确的问题来问自己以便回答它。
节点使用的V8错误对象在转换为JSON时不发送堆栈、消息等附加信息。通过阅读 Error
对象 here.
特别是使用以下处理程序,错误已成功中继到客户端
onError : function(err, req, res, next){
res.status(400).json({
message : err.message,
stack : err.stack
})
}