Je suis nouveau à la pile MEAN alors s'il vous plaît pardonnez ma question naïve, mais je n'ai pas réussi à comprendre comment passer un message d'erreur personnalisé de mon Mongoose Pré-enregistrer crochet middleware à mon contrôleur Angularjs.
J'utilise un crochet de pré-enregistrement pour vérifier si un document a déjà été sauvegardé. Si c'est le cas, je veux annuler la tentative d'enregistrement et plutôt mettre à jour le document. J'ai utilisé la méthode next(new Error('Error message'))
pour empêcher l'action save
. Ci-dessous mon code:
A mon arrière-plan:Obtenir le message d'erreur transmis à mongoose middleware next() méthode au contrôleur client
VoteSchema.pre('save',function(next){
var self = this;
self.constructor.findOneAndUpdate(
{'choice._id':self.choice._id},
{$inc:{'choice.count':1}},
{new:true},
function(err,doc){
if(err) return next(err);
if(doc!==null){
//I want to be able to pass a type like this {x:1, y:2}
//to my angular controller from here. How do I do this?
return next(new Error("Canceled save attempt!")); //this cancels the save
}
return next();
});
});
A mon contrôleur client:
vote.$save(function (response) {
console.log(response);
},
function (errorResponse) {
//I want to get my custom type from the pre-save
//middleware hook here which was equals to {x:1, y:2}
//or at least the message "Canceled save attempt!"
//Note that I checked the 'errorResponse' object but
//it isn't anywhere there
console.log(errorResponse);
}
);
En d'autres termes, comment puis-je passer un objet personnalisé de middleware mangouste (pré-enregistrer crochet) à un contrôleur angulaire?
Je ne reçois aucun des messages d'erreur transmis à la fonction 'next()' dans mon contrôleur client –
pour faire ce que vous voulez, vous devriez utiliser res.locals.result = {X: 1, Y: 1 }, Dans le middleware suivant, vous seriez en mesure d'obtenir X, Y. dans le prochain middleware console.log (res.locals.result); –
J'ai également mis à jour ma réponse. S'il vous plaît jeter un coup d'oeil et laissez-moi savoir si c'est utile ou non. –