2014-11-27 3 views
2

В SailsJS я хотел бы проверить параметры запроса, используя тот же механизм, что и при проверке моделей при выполнении действий модели.Проверить параметры запроса в SailsJS

Поэтому, когда вы определяете модель, вы используете опцию «attributes», чтобы указать свои свойства параметров, и затем они используются для проверки.

Но что делать, если вы хотите подтвердить правильность формы входа или формы электронной почты на стороне сервера, поэтому для нее не требуется модель, и вы просто хотите проверить параметры?

Так что я хотел бы быть в состоянии сделать что-то вроде этого:

//login validation 
req.validate({ 
    email: { required: true, email: true }, 
    password: { required: true } 
}); 

//send email validation 
req.validate({ 
    subject: { required: true, type: 'string' }, 
    to: { required: true, type: 'string' }, 
    body: { required: true, type: 'string' } 
}); 

Функция req.validate смешивается для всех запросов и вызывается, если req.options.usage установлен для запроса, я играл с этим немного, но я не совсем понимаю, что он делает. В этом нет ни документации, ни "anchor", что и используется для проверки.

Любая помощь или предложения по поводу того, как я мог это достичь (желательно с некоторыми недокументированными функциями SailsJS)?

ответ

0

Sails req.validate() используется в ядре парусов, и если вы хотите использовать его в контроллерах вы должны работать с попыткой поймать:

try{ 
    req.validate({ 
     email: { type: 'string' }, 
     password: { type: 'string' } 
    }); 
}catch(err){ 
    return res.send(400, err); 
} 

Или он может установить REQ. вспышка ошибка тоже ... Проверьте этот файл для более подробной информации:

https://github.com/balderdashy/sails/blob/045fc6630fd915dce1abd89844e4164a9276a8cd/lib/hooks/request/validate.js

Я WOKING в моей собственной реализации этого метода, с помощью новой функции установки крючков с НПМ в v0.11, migration guide:

https://github.com/Josebaseba/sails-hook-validator

Он все еще находится в стадии разработки, но я думаю, что он будет готов, когда придут паруса 0.11.

1

В соответствии с sailsjs docs Model Validations.

Примечания Это сокращение для Model.validate ({атрибутов}, Cb) Если вы .save() без предварительной проверки корректности ватерлинии пытается преобразовать. Если это не может быть отправлено. В этом случае он преобразовал бы массив в строку «Marie, Hank». Не будет никаких параметров в обратном вызове, если не будет ошибки. Отсутствие новостей - хорошая новость. Это метод . В настоящее время методы экземпляра не являются транзакционными. В связи с этим рекомендуется использовать эквивалентную модель .

yourLoginModel.validate(req.body, function(err) { 
    console.log(JSON.stringify(err)); 
}); 
Смежные вопросы