Node.jsのclass-validatorでユニークバリデーション
nodejsのclass-validatorについて。
https://github.com/typestack/class-validator
インストール
npm install class-validator --save
modelクラスのプロパティにアノテーションでバリデーションルールを記載し、1つのメソッドでバリデーションチェックしてくれるライブラリだ。
ほとんど使い方は公式にある通りでする理解できるが、ユニークチェックに少しハマったのでメモ。
class-validatorでユニークバリデーションチェック
Hogeクラスはhogeテーブルのモデルで、emailカラムの重複チェックをしたい時は以下のようにする。
import { validate, registerDecorator, ValidationOptions, ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments } from "class-validator"; export class Hoge { @Unique({ message: "このメールアドレスは既に使用されています。" }) public email: string | null = null; } @ValidatorConstraint({async: true}) export class UniqueConstraint implements ValidatorConstraintInterface { async validate(value: any, args: ValidationArguments) { // DBに接続してvalueの一致レコードを取得 // 一致レコードが存在する場合はfalse(バリデーションエラー) return true } } export function Unique(validationOptions?: ValidationOptions) { return function (object: Object, propertyName: string) { registerDecorator({ target: object.constructor, propertyName: propertyName, options: validationOptions, constraints: [], validator: UniqueConstraint }); }; }
後は普通にvalidateメソッド呼び出しでバリデーションできる。
const hoge = new Hoge() hoge.email = 'test@test.com' //既に登録されているemail validate(hoge).then(errors => { // このメールアドレスは既に使用されています。 });
ディスカッション
コメント一覧
まだ、コメントがありません