あらすじ
form-validatorでいけてる感じのモジュールが欲しい
とりあえず検索
validator で検索するといくつかのモジュールがヒットする
% npm search validator ...(中略)...
上記から以下の順番で抽出。
- githubのアカウントを持っている
- フォロワー数が2桁以上
以下、結果。フォロワー数/ウォッチされている数
- 55/91 https://github.com/dandean/express-form
- 15/145 https://github.com/garycourt/JSV
- 37/1 https://github.com/serby/piton-validity
- 126/352 https://github.com/chriso/node-validator
piton-validity は今回除外して残りを順番に見てみる事にします。
express-form
req.paramsから値を取得する前提なら良いかもしれない。チェックしたい値の受け渡しをreq.paramsでやっている場合は後述のvalidatorではなくこちらを使う選択肢もなきにしもあらず。
JSV
json の構造をチェックするモジュールのような印象を受けます。ちょっとインターフェース見た感じ使っててうれしい感はあんまり無いかもしれません。
validator
これが一番まともだと思います。ただしデフォルトで例外処理を投げるのでform-validatorとしての挙動で違和感を感じます。まあ個人差があると思いますが、そもそもform-validatorという名前空間でもないか。
READMEには以下の記述でエラーメッセージをスタックさせる事ができると書いていますので例外を投げるのに違和感がある場合はそうする事もできるので各自の好みで。
Validator.prototype.error = function (msg) { this._errors.push(msg); } Validator.prototype.getErrors = function () { return this._errors; } var validator = new Validator(); validator.check('abc').isEmail(); validator.check('hello').len(10,30); var errors = validator.getErrors(); // ['Invalid email', 'String is too small']
「Invalid email」というエラーメッセージを日本語化したい場合はどうすればいいのかは現時点では私は不要なので追求していません。
まとめ
とりあえず以下のようなコードを書く場合、私だったらvalidatorをラップして使うんじゃないかなあ。
var myValidator = new MyValidator(); var errMsgs = myValidator.checkMyCode('my-xxxxx'); if (errMsgs) { ... }
追記
npm search コマンドが何故か微妙なので http://search.npmjs.org/ を使った方がいいよという話を聞いたのでそちらで検索したところ amanda というモジュールも見つかりました。
モジュール探す場合はこちらのサイトを利用すると良い、という結果を得た。