2017-07-02 1 views
0

J'ai un modèle qui ressemble à ceci:Comment puis-je itérer par erreur retourné par Mongoose?

user.js

var AuthorSchema = Schema({ 
    first_name: {type: String, required: true, minlength: 5, maxlength: 20}, 
    last_name: {type: String, minlength: 5, maxlength: 20}, 
    username: {type: String, required: true, match: /([0-9A-Za-z]){5,20}/}, 
    password: String, 
    email: {type: String, required: true, 

     validate: function(email) { 
      return /^[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email) 
     } 

    }, 
    createdOn: {type: Date, default: Date.now }, 
    updatedOn: {type: Date, default: Date.now } 
}); 

app.js

a = new my_models.Author({ 
    first_name: 'err', ## invalid 
    username: '[email protected]', # invalid 
    password: 'pass', 
    email: 'aaa', # invalid 
}); 

a.save(function (err) { 
    if(err) { console.log(err) return; } 
    console.log("Author saved") 
}); 

Comment iternate si des erreurs objet retourné par mangouste?

+0

L'objet renvoie une erreur, mais pas beaucoup. Une opération de sauvegarde peut vous donner au plus une erreur. –

+0

Je passe des données invalides à trois champs et je veux savoir comment je parcourir ces erreurs. – Cody

+0

Regardez le [docs] (http://mongoosejs.com/docs/validation.html), 'err.errors' vous donne un objet que chaque clé est un champ qui n'a pas passé la validation. Si vous vous demandez comment itérer sur cet objet, il utilise simplement javascript et n'a rien à voir avec mongoose. –

Répondre

0

Vous pouvez vérifier la validation avant d'enregistrer les données. Essayez quelque chose comme ceci

const a = new my_models.Author({ first_name: 'err', username: '[email protected]', password: 'pass', email: 'aaa', }); 
const validateResult = a.validateSync(); 
const {message} = validateResult.errors.name; 
console.log(message);