Как вы справляетесь с проверкой формы, особенно с вложенными моделями, в Node.js + Express + Mongoose + Jade - PullRequest
14 голосов
/ 29 сентября 2011

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

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

Ответы [ 3 ]

18 голосов
/ 29 сентября 2011

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

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

14 голосов
/ 17 октября 2011

Mongoose имеет промежуточное ПО для проверки.Вы можете определить функции проверки для элементов схемы индивидуально.Вложенные элементы также могут быть проверены.Кроме того, вы можете определить асинхронные проверки.Для получения дополнительной информации посетите страницу 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');
  }
...
});
5 голосов
/ 18 октября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...