Ne peut pas obtenir Sequelize validation de travail
Je suis en train de mettre en œuvre la validation de mon Sequelize modèles. Le modèle est défini comme suit
var model = sequelize.define('Model', {
from: {
type: DataTypes.STRING,
allowNull: false,
validate: {
isEmail: true
}
}
}
Alors je suis en train de construire une instance et de les valider:
var m = Model.build({ from: 'obviously not a email' });
var err = m.validate();
Mais si je ne console.log(err)
, je reçois { fct: [Function] }
seulement. La définition d'un validateur personnalisé, qui lève une exception une exception non gérée.
Comment dois-je utiliser validate()
correctement?
Tout d'abord j'ai essayé la version 2.0.0-alpha2. J'ai réussi à comprendre qu'il utilise des promesses plutôt que de retour direct de la valeur, ce n'est pas décrite dans les documents encore. Maintenant, j'ai roulé vers 1.6.0, où la valeur est renvoyée directement. Je vais essayer de travailler avec des promesses plus tard
Intéressé par un 2.0.0-solution?
ce serait sympa, merci
fournira un plus tard le jour
Intéressé par un 2.0.0-solution?
ce serait sympa, merci
fournira un plus tard le jour
OriginalL'auteur mrvn | 2013-06-22
Vous devez vous connecter pour publier un commentaire.
Ici est de savoir comment obtenir votre problème résolu avec la Sequelize
v2.0.0
:Ce résultat:
Côté remarque: Vous pouvez également ignorer les
validate
appel et il suffit de créer l'instance de la place:L'erreur de la méthode recevrez la même erreur de l'objet, comme dans l'extrait de code précédent.
Salutations,
sdepold.
Vrai. Vais essayer de le faire plus tard de la journée.
Je pense qu'il est important de noter explicitement que lorsque
validate()
échoue, il appelle encoresuccess()
, mais avec une liste d'erreurs. Facile à assumererror()
serait appelée sur un échec de la validation.Les docs sont dans le besoin d'une mise à jour majeure. Je reçois la promesse d'avis depuis bluebird/promesse a changé là où ils s'attendaient .alors .catch etc. pas ce qui est indiqué ci-dessus. C'est très déroutant pour la plupart, tentent d'utiliser sequelize. Je ne suis pas en mesure d'obtenir la validation de travailler. Il continue d'insérer une chaîne de caractères qui doit être un isURL manque les protocoles http.
J'ai juste essayé avec le isInt: vrai validateur et il est entré dans le catch c'est donc le isUrl qui est un échec. Retiré de la .com à la fin et l'url du programme de validation ne se soucie pas du protocole au début, mais les docs mention "// vérifie le format d'url (foo.com)". Je vais soumettre un ticket sur github.
OriginalL'auteur sdepold
Une approche alternative pour la validation dans Sequelize, utiliser un crochet à la place d'un modèle de validation. Je suis l'aide de la "beforeValidate" hook et l'ajout de la validation (à l'aide du programme de validation du module) avec des Promesses qui sont rejetés lors de la validation échoue.
OriginalL'auteur William Myers
Cela a fonctionné pour moi
Dans l'utilisation du modèle :-
Dans votre logique de commande pendant que vous enregistrez le modèle de ce faire :-
OriginalL'auteur Keval Gohil