2013-09-15 7 views
0

Я использую следующий модуль узла для проверки: https://github.com/chriso/node-validatorинтеграции модуля проверки в node.js

Теперь предположим, что я хочу, чтобы проверить на входе пользователя, как этот check('abc').isInt(); я заметил, что он в основном выдает ошибку!

Я довольно новый с node.js, но мне кажется, что при использовании блокировки try{}catch(e){} каждый раз, когда мне нужно проверять, пользовательский ввод немного перегружен.

бы не больше смысла, чтобы иметь что-то вроде

if (check('abc').isInt()) { 
    // Do things here 
    next(null, stuff_I_want_to_return) 
} else next(error); 

вместо

try{ 
    check('abc').isInt() 
    next(null, stuff_I_want_to_return) 
} catch(e) { next(e); } 

?? Я понятия не имею, прошу прояснить, какой подход лучше всего подходит в этом случае. Заранее спасибо.

ответ

0

Их документы говорят, что вы можете сделать эту

var Validator = require('validator').Validator; 
var v = new Validator(); 
v.error = function(msg) { 
    console.log('Fail'); 
} 
v.check('abc').isInt(); //'Fail' 

Таким образом, вам не придется делать попытаться поймать

0

Проверить модуль core-util-is, предоставляющий функции, введенные в Узел v0.12.

В вашем случае, метод IsNumber бы полезно

0

Это все еще довольно часто в Node.js для синхронных функций throw как они обычно не имеют обратного вызова, чтобы передать error в. Но они все равно нуждаются в некотором роде, чтобы доставить его на вызов кода, а return error;, как правило, будет неожиданным выбором.

Хотя, документация для node-validator действительно включает пример для расширения Validator S с методом getErrors() под «Error Handling».

Validator.prototype.error = function (msg) { 
    this._errors.push(msg); 
    return this; 
} 

Validator.prototype.getErrors = function() { 
    return this._errors; 
} 

, которые могут быть использованы для сообщения об ошибках без throw:

var validator = new Validator(); 

if (validator.check('abc').isInt()) { 
    next(null, ...); 
} else { 
    next(validator.getErrors()); 
} 

Примечание: Свойство _errors должно already be defined после использования .check().

Смежные вопросы