2017-02-06 1 views
0

Il semble que les messages d'erreur soient entourés de texte. Dites dans une validation de modèle que je veux juste envoyer "existe" au client si un enregistrement existe déjà.feathersjs: Comment transmettre des erreurs sans opinion au client

Un serveur peut-être que je fais quelque chose comme:

validate: { 
     isEmail: true, 
     isUnique: function (email, done) { 
      console.log("checking to see if %s exists", email); 
      user.findOne({ where: { email: email }}) 
      .then(function (user) { 
       done(new Error("exists")); 
      },function(err) { 
       console.error(err); 
       done(new Error('ERROR: see server log for details')); 
       } 
      ); 
     } 
     } 

Sur le client peut-être que je fais:

feathers.service('users').create({ 
     email: email, 
     password: password 
    }) 
     .then(function() { 
     console.log("created"); 
     }) 
     .catch(function(error){ 
     console.error('Error Creating User!'); 
     console.log(error); 
     }); 

L'erreur imprimée à la console est:

"Error: Validation error: exists"

Comment Je viens d'envoyer le mot "existe" sans le texte supplémentaire? Vraiment je voudrais renvoyer un objet personnalisé, mais je ne peux pas trouver d'exemples de faire cela. Le plus proche que j'ai vu est ceci: https://docs.feathersjs.com/middleware/error-handling.html#featherserror-api

Mais je n'ai pas compris comment faire quelque chose comme ceci fonctionne dans le validateur.

Répondre

1

Feathers ne modifie aucun message d'erreur, donc le préfixe Validation error: est probablement ajouté par Mongoose.

Si vous souhaitez modifier le message ou envoyer un tout nouvel objet d'erreur, comme des plumes crochets v1.6.0 vous pouvez utiliser des crochets d'erreur:

const errors = require('feathers-errors'); 

app.service('myservice').hooks({ 
    error(hook) { 
    const { error } = hook; 

    if(error.message.indexOf('Validation error:') !== -1) { 
     hook.error = new errors.BadRequest('Something is wrong'); 
    } 
    } 
}); 

Vous pouvez en savoir plus sur les crochets d'erreur et d'application here