gpt4 book ai didi

node.js - express-restify-mongoose 错误传播

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:23 26 4
gpt4 key购买 nike

我在使用express-mongoose-restify 提供错误消息时遇到问题。

我的模式有一个像这样的钩子(Hook)

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)。消息无法验证模型未发送到客户端。我认为我误解了服务器端错误处理程序中 err 的对象类型。有什么想法吗?提前致谢!

最佳答案

在这种情况下,写下这个问题让我想到了应该问自己的正确问题来回答它。

Node 使用的 V8 错误对象在转换为 JSON 时不会发送堆栈、消息等附加信息。我的问题是通过读取 Error 对象 here 的属性解决的。 .

特别是使用以下处理程序,错误已成功转发到客户端

onError : function(err, req, res, next){
res.status(400).json({
message : err.message,
stack : err.stack
})
}

关于node.js - express-restify-mongoose 错误传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33734751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com