2015-05-08 2 views
2

Pretty сам пояснительный думаю. У меня есть функция регистрации, и я следил за советом почти каждого учебника, говорящего, чтобы отделить логику приложения от клиента. Итак, этот код сервера - хороший способ справиться с тем, чтобы убедиться, что все необходимые поля? Почему или почему нет?Является ли это эффективным способом проверки органов запроса в узле?

PS: _.контейнеры из библиотеки lodash.

function checkBody(body, callback){ 
    var required = ['username', 'password', 'email']; 
    for (x in required){ 
    if (!_.contains(body, required[x])){ 
     callback(null, false); 
    } 
    } 
    callback(null, true); 
} 

ответ

1

Мне нравится использовать JSON schemas для подтверждения запроса органов, поскольку она позволяет применять ваши требования декларативно. Вы также можете написать общую функцию промежуточного слоя, чтобы ваш код был красивым и чистым. tv4 - хорошая библиотека для этого. Вот небольшой пример:

var tv4 = require('tv4'); 

var enforceSchema = function(schema) { 
    return function(req, res, next) { 
     if (!tv4.validate(req.body, schema)) { 
      res.status(400).end(); 
     } else { 
      next(); 
     } 
    }; 
}; 

var loginSchema = { 
    properties: { 
     username: { 
      type: 'string', 
      minLength: 1 
     }, 
     email: { 
      type: 'string', 
      minLength: 1 
     }, 
     password: { 
      type: 'string', 
      minLength: 1 
     } 
    }, 
    required: ['username', 'email', 'password'] 
}; 

app.post('/signup', enforceSchema(loginSchema), function(req, res, next) { 
    res.end(); 
}); 
Смежные вопросы