Imaginez que je l'ai défini la fonction validateur personnalisé suivant:de validateur personnalisé, vérifiez le nom d'utilisateur uniques/mot de passe
isUnique: function() { // This works as expected
throw new Error({error:[{message:'Email address already in use!'}]});
}
Cependant, lorsque je tente d'interroger la base de données que je rencontre des problèmes:
isUnique: function (email) { // This doesn't work
var User = seqeulize.import('/path/to/user/model');
User.find({where:{email: email}})
.success(function() { // This gets called
throw new Error({error:[{message:'Email address already in use!'}]}); // But this isn't triggering a validation error.
});
}
Comment puis-je interroger l'ORM dans un validateur personnalisé et déclencher une erreur de validation en fonction de la réponse de l'ORM?
bien que cela ne fonctionne pas, vous pouvez essayer de lancer '.find()' simple et en callback manipuler le résultat o f interrogez et appelez 'response.render' ou toute autre chose pour envoyer un message à l'utilisateur. – Gntem
Sérieusement !? J'essaye de programmer à l'interface Sequelize plutôt qu'une implémentation solide. Pourquoi ce qui précède ne fonctionne pas? Je peux seulement imaginer que .find attrape l'erreur quelque part? –
Juste pour clarifier, User.find ({where: {email: email}}). Success() fonctionne parfaitement (comme spécifié dans les docs Sequelize). Le problème est que Sequelize n'attrape pas l'erreur, ou que l'erreur est capturée ailleurs. –