🐈
TypeORMのトランスフォーム機能のススメ
概要
TypeORMのtransformer機能
を利用した際の備忘録です
これから導入される方や初めて使う方の参考になれば幸いです
やり方
固定データを管理・操作するマスタークラスを作成します
master.master.ts
export class Master {
private readonly masters: IMaster[]
constructor(masters: IMaster[]) {
this.masters = masters
}
findNameById(id: number) {
return this.masters.find((v) => v.id === Number(id))
}
findIdByName(name: string) {
return this.masters.find((v) => v.name === name)
}
}
export interface IMaster {
id: number
name: string
}
都道府県データをIMaster化します
Prefecture.ts
import { IMaster, Master } from './master.master'
const PREFECTURE: IMaster[] = [
{
id: 1,
name: '北海道',
},
{
id: 2,
name: '青森県',
},
// 省略します
{
id: 47,
name: '沖縄県',
},
]
class PrefectureMaster extends Master {
constructor() {
super(PREFECTURE)
}
}
export const Prefecture = new PrefectureMaster()
transformerを利用してEntityを定義します
@Column('tinyint', {
unsigned: true,
comment: '都道府県ID',
transformer: {
from(id: number): IMaster {
return Prefecture.findNameById(id)
},
to(value: IMaster): number {
return value.id
},
},
})
prefecture_id: IMaster
参考文献
最後に
読んでいただきありがとうございます。
今回の記事はいかがでしたか?
・こういう記事が読みたい
・こういうところが良かった
・こうした方が良いのではないか
などなど、率直なご意見を募集しております。
Discussion