I\'m trying to validate some data that will be inserted into a new document, but not before a lot of other things need to happen. So I was going to add a function to the static
As explained here in the mongoose documents https://mongoosejs.com/docs/validation.html , you can use doc.validate(callback)
or doc.validateSync()
to check for validation.
The difference is that you do not have to use await
for validateSync()
as its name suggests. it returns an error if validation fails, otherwise, it returns undefined
.
for example:
const model = new Model({somedata:somedata})
const validatedModel = model.validateSync()
if(!!validatedModel) throw validatedModel
There is one way to do that through Custom validators. When the validation failed, failed to save document into DB.
var peopleSchema = new mongoose.Schema({
name: String,
age: Number
});
var People = mongoose.model('People', peopleSchema);
peopleSchema.path('name').validate(function(n) {
return !!n && n.length >= 3 && n.length < 25;
}, 'Invalid Name');
function savePeople() {
var p = new People({
name: 'you',
age: 3
});
p.save(function(err){
if (err) {
console.log(err);
}
else
console.log('save people successfully.');
});
}
Or another way to do that through validate() with same schema as you defined.
var p = new People({
name: 'you',
age: 3
});
p.validate(function(err) {
if (err)
console.log(err);
else
console.log('pass validate');
});