Ответ 1
Я лично использую node-validator для проверки правильности всех полей ввода от пользователя до его представления в Mongoose.
Node -validator также хорош для создания списка всех ошибок, которые затем могут быть представлены пользователю.
Как вы обрабатываете проверку формы с помощью Express и Mongoose? Вы используете настраиваемые методы, некоторый плагин или массив ошибок по умолчанию?
Хотя я мог бы увидеть использование массива ошибок по умолчанию для очень простой проверки, этот подход, похоже, взорвется в сценарии наличия вложенных моделей.
Я лично использую node-validator для проверки правильности всех полей ввода от пользователя до его представления в Mongoose.
Node -validator также хорош для создания списка всех ошибок, которые затем могут быть представлены пользователю.
У Mongoose есть промежуточное программное обеспечение для проверки. Вы можете определять функции проверки для элементов схемы отдельно. Вложенные элементы также могут быть проверены. Кроме того, вы можете определить asyn-проверки. Для получения дополнительной информации просмотрите страницу mongoose.
var mongoose = require('mongoose'),
schema = mongoose.Schema,
accountSchema = new schema({
accountID: { type: Number, validate: [
function(v){
return (v !== null);
}, 'accountID must be entered!'
]}
}),
personSchema = new schema({
name: { type: String, validate: [
function(v){
return v.length < 20;
}, 'name must be max 20 characters!']
},
age: Number,
account: [accountSchema]
}),
connection = mongoose.createConnection('mongodb://127.0.0.1/test');
personModel = connection.model('person', personSchema),
accountModel = connection.model('account', accountSchema);
...
var person = new personModel({
name: req.body.person.name,
age: req.body.person.age,
account: new accountModel({ accountID: req.body.person.account })
});
person.save(function(err){
if(err) {
console.log(err);
req.flash('error', err);
res.render('view');
}
...
});
Я использую express-form промежуточное программное обеспечение для проверки; он также имеет возможности фильтров. Он основан на node -validator, но имеет дополнительные бонусы для выражения. Он добавляет свойство объекту запроса, указывающее, является ли оно допустимым и возвращает массив ошибок.
Я бы использовал это, если вы используете экспресс.