前回
スキーマ
Entityとしてモデルを定義するのとは別に、Entity Schemaで列の状態などを定義することができます。
Entity Schemaを作成してみます。
まず、Entityを修正します。
src/user/entities/user.entity.ts
import { Photo } from "src/photo/entities/photo.entity"; export class User { id: number; firstName: string; lastName: string; isActive: boolean; photos: Photo; }
Entity Schemaを作成します。
src/user/user.schema.ts
import { EntitySchema } from "typeorm"; import { User } from "./entities/user.entity"; export const UserSchema = new EntitySchema<User>({ name: "User", columns: { id: { type: Number, primary: true, generated: true, }, firstName: { type: String, }, lastName: { type: String, }, isActive: { type: Boolean, default: true, }, }, relations: { photos: { type: "one-to-many", target: "Photo", }, }, });
Photoも同様に対応します。
src/photo/entities/photo.entity.ts
import { User } from "src/user/entities/user.entity"; export class Photo { id: number; url: string; user: User; }
src/photo/photo.schema.ts
import { EntitySchema } from "typeorm"; import { Photo } from "./entities/photo.entity"; export const PhotoSchema = new EntitySchema<Photo>({ name: "Photo", columns: { id: { type: Number, primary: true, generated: true, }, url: { type: String, }, }, relations: { user: { type: "many-to-one", target: "User", }, }, });
ユーザモジュールに紐付けます。
src/user/user.module.ts
import { Module } from "@nestjs/common"; import { UserService } from "./user.service"; import { UserController } from "./user.controller"; import { TypeOrmModule } from "@nestjs/typeorm"; import { UserSchema } from "./user.schema"; import { PhotoSchema } from "src/photo/photo.schema"; @Module({ imports: [TypeOrmModule.forFeature([UserSchema, PhotoSchema])], controllers: [UserController], providers: [UserService], }) export class UserModule {}
Entity Schemaを組み込むことができました。
まとめ
ここまでで、
- スキーマについて
を学ぶことができました。
次回もデータベース操作を掘り下げようと思います。
コード
今回のコードは、以下に格納しました。