2017-10-08 67 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