Mongoose 4.11.12预验证错误返回空的JSON响应

时间:2017-10-08 10:11:15

标签: mongoose mongoose-schema

我在Mongoose Model中有代码,但在客户端,在Ajax Response中它返回Empty Error {}

tableSchema.pre('validate', function(next) {
 // You **must** do `new Error()`. `next('something went wrong')` will
 // **not** work
 var err = new Error('something went wrong');
 next(err);
});

在控制台中显示出错误

Error: something went wrong
at model.<anonymous> (/Volumes/D/www/node_js/ck_app_server_client/server/model/AccountModel.js:48:13)
at model._next (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/hooks-fixed/hooks.js:62:30)
at model.proto.(anonymous function) [as $__original_validate] (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/hooks-fixed/hooks.js:108:20)
at model.<anonymous> (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/mongoose/lib/plugins/validateBeforeSave.js:31:14)
at model._next (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/hooks-fixed/hooks.js:62:30)
at model.proto.(anonymous function) [as $__original_save] (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/hooks-fixed/hooks.js:108:20)
at /Volumes/D/www/node_js/ck_app_server_client/server/node_modules/mongoose/lib/services/model/applyHooks.js:153:27
at new Promise.ES6 (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/mongoose/lib/promise.js:45:3)
at model.wrappedPointCut [as save] (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/mongoose/lib/services/model/applyHooks.js:131:23)
at /Volumes/D/www/node_js/ck_app_server_client/server/routes/accounts.js:36:7
at Layer.handle [as handle_request] (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/express/lib/router/layer.js:95:5)
at next (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/express/lib/router/layer.js:95:5)
at /Volumes/D/www/node_js/ck_app_server_client/server/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/Volumes/D/www/node_js/ck_app_server_client/server/node_modules/express/lib/router/index.js:335:12)

1 个答案:

答案 0 :(得分:0)

这可以证明同样的行为:

JSON.stringify(Error('something went wrong'))

这导致{},因为Error个实例被序列化为JSON的方式。

如果你想将它序列化为有意义的东西,你必须自己构建一个结构:

JSON.stringify({ error : { message : err.message, stack : err.stack } })

还有plenty of modules提供类似的内容。