Подтвердить что ты не робот

Как вы обрабатываете проверку формы, особенно с вложенными моделями, в Node.js + Express + Mongoose + Jade

Как вы обрабатываете проверку формы с помощью Express и Mongoose? Вы используете настраиваемые методы, некоторый плагин или массив ошибок по умолчанию?

Хотя я мог бы увидеть использование массива ошибок по умолчанию для очень простой проверки, этот подход, похоже, взорвется в сценарии наличия вложенных моделей.

4b9b3361

Ответ 1

Я лично использую node-validator для проверки правильности всех полей ввода от пользователя до его представления в Mongoose.

Node -validator также хорош для создания списка всех ошибок, которые затем могут быть представлены пользователю.

Ответ 2

У 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');
  }
...
});

Ответ 3

Я использую express-form промежуточное программное обеспечение для проверки; он также имеет возможности фильтров. Он основан на node -validator, но имеет дополнительные бонусы для выражения. Он добавляет свойство объекту запроса, указывающее, является ли оно допустимым и возвращает массив ошибок.

Я бы использовал это, если вы используете экспресс.