🦁

TypeORM の create が信用できないなら build メソッドを用意すると良さげ

2024/06/12に公開

TypeORM

create が信用できない件

以下、公式サイトの例から。
仮に User Entity のid・firstName 等の値の指定が必須だとしても、 create のタイミングではエラーを吐きません。
create 後に値の追加・更新が行われることが想定されているようです。

  • create - Creates a new instance of User. Optionally accepts an object literal with user properties which will be written into newly created user object
const user = repository.create() // same as const user = new User();
const user = repository.create({
    id: 1,
    firstName: "Timber",
    lastName: "Saw",
}) // same as const user = new User(); user.firstName = "Timber"; user.lastName = "Saw";

Repository APIs

build メソッドを用意して、生成時に誤りを見つけたい

以下のように build メソッドを用意し、それを使用すれば、生成のタイミングで簡単に誤りを見つけることができます。
Entity ごとに定義するのは少し面倒ですが、特に生成の箇所が散らばるのであれば、用意しておく価値は十分にあると思います。
Entity に変更が加わる度に、生成の箇所を見直すのは結構面倒ですよね。
e.g. とある値のデフォルト値が削除された

// 事前に UserProps を定義しておく
static build(props: UserProps) {
  return User.create({ ...props });
}

あとがき

とはいえ、 create の使用を制限するわけではないので、ルールの作成・周知は必要だと思います。
TypeORM はチームによって使い方が結構違いそうなイメージがあります。
Tips やルール等、コメントにてご教授いただけると嬉しいです!

参考

Discussion