NodeJS: Mongoose walidacja danych modelu

Opublikowano: 08.03.2022 - tagi: NodeJS MongoDB Mongoose Walidacja Dane Model JavaScript

Model danych

Biblioteka Mongoose dysponuje kilkoma walidatorami, które określamy w modelu dokumentu:

const PersonSchema = new Schema({
name: { type: String, required: true },
age: { type: Number, min: 18 }
});
const PersonModel = mongoose.model('person', PersonSchema);

Spróbujmy zapisać model danych, który jest niepoprawny:

const noNamePerson = new PersonModel({ age: 16 });
try {
await PersonModel.create(noNamePerson);
} catch(error) {
console.log('error: ', error);
}

W tym przypadku zwróci błąd walidacji.

Walidacja danych

A co w przypadku, gdybyśmy chcieli sprawdzić poprawność danych przed ich zapisem?

Istnieje metoda validateSync, która poinformuje nas o ewentualnych błędach:

const noNamePerson = new PersonModel({ age: 16 });

const validateErrors = noNamePerson.validateSync();
console.log(validateErrors);

try {
await PersonModel.create(noNamePerson);
} catch(error) {
console.log('error: ', error);
}

Jeśli nie ma błędów zmienna validateErrors będzie pusta. W przypadku błędów walidacji zwróci obiekt, do którego można się dostać w taki sposób:

const validateErrors = noNamePerson.validateSync();
console.log(validateErrors.errors.title);
console.log(validateErrors.errors.age);