2013-06-11 1 views
1

Ceci est mon models.jsSequelizejs n'apparaît pas toutes les erreurs de validation ou de messages

var User = require('../../managedb').User; 

module.exports = function(sequelize, DataTypes) { 


    return sequelize.define('User', { 
    username: { 
     type: DataTypes.STRING, 
     unique: { 
     msg: "Username already exists!" 
     } 
    }, 
    password: { 
     type: DataTypes.STRING, 
     len: { 
     args: 6, 
     msg: "Password must be atleast 6 characters in length" 
     } 
    }, 
    email_id:{ 
     type: DataTypes.STRING, 
     unique:{ 
     msg: "Email already exists!" 
     }, 
     validate: { 
     isEmail: { 
      msg: "Email is invalid!" 
     }, 
     notNull: true, 
     } 
    }, 
    id: { 
     type: DataTypes.INTEGER, 
     primaryKey: true, 
     autoIncrement: true 
    } 
    }, 
    { 
    instanceMethods: { 
     countTasks: function() { 
     // how to implement this method ? 
     } 
    } 
    }); 

Ceci est la réponse d'erreur que je reçois lorsque je tente de sauver un objet avec un nom d'utilisateur unique et non email:

'{"length":173,"name":"error","severity":"ERROR","code":"23505","detail":"Key (email_id)=([email protected]) already exists.","file":"nbtinsert.c","line":"397","routine":"_bt_check_unique"}' 

Dois-je exécuter la fonction validate() en premier? Où vais-je me tromper ici?

+0

Quelle version de Sequelize utilisez-vous? – sdepold

Répondre

3

La validation doit faire partie de l'objet validate dans la définition de l'attribut:

return sequelize.define('User', { 
    username: { 
    type: DataTypes.STRING, 
    validate: { 
     unique: { 
     msg: "Username already exists!" 
     } 
    } 
    } 
}) 
+0

Merci pour la réponse. J'ai essayé cela et j'ai obtenu ceci: Erreur: Fonction de validateur invalide: unique comme réponse. Seulement alors j'ai posté ici. J'utilise la version 1.7 alpha de sequelize. – Hick

+0

à la fois unique et isunique n'existent pas, sauf si vous attendez des utilisateurs à écrire des fonctions personnalisées pour faire des validations pour unique? – Hick

+0

Vous avez raison. Totalement négligé unique. Cependant, vous pouvez utiliser la dernière version '2.0.0' qui contient des validations asynchrones: https://github.com/sequelize/sequelize/blob/milestones/2.0.0/spec/dao.validations.spec.js#L278 – sdepold

Questions connexes