AxiosでCookieを送信してSessionを共有する
ブラウザからAxiosでCookieセット ブラウザのSessionCookieなどをaxiosでそのままサーバーに送信したい時は以下のようにセットする。 axios.get('url', { withCredentials: true } ) そしてサーバー側は次のように許可す …
nodejsのclass-validatorについて。
https://github.com/typestack/class-validator
modelクラスのプロパティにアノテーションでバリデーションルールを記載し、1つのメソッドでバリデーションチェックしてくれるライブラリだ。
ほとんど使い方は公式にある通りでする理解できるが、ユニークチェックに少しハマったのでメモ。
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 = '[email protected]' //既に登録されているemail
validate(hoge).then(errors => {
// このメールアドレスは既に使用されています。
});
(別ブログからの移行記事)
ブラウザからAxiosでCookieセット ブラウザのSessionCookieなどをaxiosでそのままサーバーに送信したい時は以下のようにセットする。 axios.get('url', { withCredentials: true } ) そしてサーバー側は次のように許可す …
コードを書く人間なら、キーボードにこだわりたくなるものだ。ノートPCをメインにしている場合はキーボードを変えることは難しいが、それでもJIS配列かUS配列など一度は考えたことがあるはずだ。 このサイトで何度も書いている通り、プログラミングのほとんどは試行錯誤の繰り返しで作り上げてい …