2017-10-08 6 views
0

J'ai ce code dans Mongoose modèle, mais sur le côté client, à Ajax Response retourne vide Erreur {}Mongoose 4.11.12 avant de valider l'erreur retourne réponse JSON vide

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); 
}); 

EN CONSOLE ÇA SE VOIT QUE ERREUR

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

Comment sauvegardez-vous et envoyez-vous la réponse? Montrez le reste de votre code. – Mikey

Répondre

0

Le même comportement peut être démontrée par ceci:

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

Il en résulte {}, car c'est ainsi que les instances Error sont sérialisées en JSON.

Si vous voulez sérialiser à quelque chose de significatif, vous devez faire une structure vous-même:

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

Il y a aussi plenty of modules qui offrent quelque chose de similaire.

+0

Vous semblez mal comprendre ma question que je voulais dire Au côté client, il revient vide. si (err) renvoie res.send (401, {error: err}); err is EMPTY –

+0

@AmanBansal vous semblez mal comprendre ma réponse: les instances 'Error' sont sérialisées en un objet _empty_ (' {} ') lors de la conversion en JSON. C'est comme ça que ça fonctionne. Vous devez contourner cela en utilisant les propriétés spécifiques de l'objet 'Error', ce que ma réponse montre. – robertklep