2017-07-02 80 views
0

我有一個模型,它看起來是這樣的:如何迭代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") 
}); 

如何iternate雖然錯誤對象由貓鼬回來了?

+0

該對象返回一個錯誤,並不是很多。一次保存操作最多可以給你一個錯誤。 –

+0

我傳遞無效數據到三個字段,我想知道如何迭代這些錯誤。 – Cody

+0

看看[docs](http://mongoosejs.com/docs/validation.html),'err.errors'爲你提供了一個對象,即每個鍵都是一個沒有通過驗證的字段。如果你的問題是如何遍歷該對象,那只是使用普通的javascript,並且與貓鼬無關。 –

回答

0

您可以在保存數據之前檢查驗證。嘗試像這樣

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);