2017-10-08 71 views
0

我有一个代码,猫鼬的模式,但在客户端,在Ajax响应返回Empty错误{}猫鼬4.11.12预验证错误返回空JSON响应

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

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) 
+0

您是如何保存并发送回复的?显示其余的代码。 – Mikey

回答

0

同样的行为可以由此证明:

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

这导致{},因为这是Error实例如何序列化为JSON。

如果你想它序列化到一些有意义的事情,你必须做出自己的结构:

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

也有plenty of modules,提供类似的东西。

+0

你似乎误解了我的问题,我的意思是在客户端它返回空。如果(err)返回res.send(401,{error:err}); err是EMPTY –

+0

@AmanBansal你似乎误解了我的答案:错误'实例在转换为JSON时被序列化为_empty object_('{}')。这就是它的工作原理。你需要通过使用'Error'对象的特定属性来解决这个问题,这就是我的答案所显示的。 – robertklep