ノード内のORMの統合簡単なステップ


こんにちは開発者!このポストでは、基本的な操作CRUD(CREATE、READ、UPDATE、DELETE)を実行するデータベース(MySQL)と対話するためにORM(typeRM)を実装します.始めましょう.

❤️ フォローミー

  • 🐦 Twitter
  • 🐙 ギタブthebug404
  • 🔥 始める


    このセクションでは、モデル、グローバル設定、リポジトリの定義などを定義します.
    また、githubにこのリポジトリを訪れて、それをあなたのコンピュータに複製することもできます.ところで、あなたの小さな星を残して😜
    リポジトリhttps://github.com/thebugweb/todo-express-api

    1 .定義モデル


    クリエイトsrc/entity/Task.ts ファイル
  • @Entity : クラスをtypeRMエンティティに変換します.このエンティティは、使用しているデータベースに応じて、テーブルやドキュメントになります.
  • @Column : 列デコレータは、特定のクラスプロパティをテーブル列としてマークするために使用されます.
  • @PrimaryGeneratedColumn : このデコレータは、主キーを自動的に生成します.
  • @CreateDateColumn : この列は挿入されたオブジェクトの作成日を格納します.
  • @UpdateDateColumn : この列は更新されたオブジェクトの更新日を格納します.
  • import {
      Entity,
      Column,
      PrimaryGeneratedColumn,
      CreateDateColumn,
      UpdateDateColumn
    } from "typeorm";
    
    @Entity()
    export class Task {
      @PrimaryGeneratedColumn()
      id!: number;
    
      @Column()
      title!: string;
    
      @Column()
      description!: string;
    
      @Column("boolean", { default: false })
      isCompleted!: boolean;
    
      @CreateDateColumn()
      createdAt!: Date;
    
      @UpdateDateColumn()
      updatedAt!: Date;
    }
    

    typeRMの設定


    クリエイトsrc/config/database.ts ファイル.このファイルでは、typeRMのグローバル設定を追加します.次のようになります.
  • データベースの種類(タイプ、ホスト、ユーザ名)を指定します
  • エンティティを登録します.
  • 我々の移行を登録してください.
  • その他の機能.
  • import { DataSource } from "typeorm";
    
    import { Task } from "../entity/Task";
    
    export default new DataSource({
      type: "mysql",
      host: "localhost",
      port: 3306,
      username: "root",
      password: "",
      database: "todo",
      entities: [Task],
      synchronize: true,
      logging: false
    });
    

    If you want more information visit here


    データベース接続


    設定( src/config/database . ts )をインポートし、データベースとの接続を確立するためにtypeRMを初期化します
    import "reflect-metadata";
    
    import express from "express";
    
    import database from "./config/database";
    
    const app = express();
    
    database.initialize()
      .then(() => console.log("Database connected"))
      .catch(console.error)
    
    app.listen(3030, ()=> {
      console.log("App execute in port:3030");
    });
    

    4リポジトリ定義


    クリエイトsrc/tasks/task.repository.ts ファイル.このファイルはクラスを持っています.これはtypeRMと相互作用する責任があります.
    import database from "../config/database";
    
    import { DatabaseRepository, Id, Query } from "../declarations";
    import { Task } from "../entity/Task";
    
    export class TaskRepository implements DatabaseRepository<Task> {
      async create(data: Partial<Task>, query?: Query): Promise<Task> {
        const repository = database.getRepository(Task);
    
        const task = repository.create(data);
    
        await repository.save(task);
    
        return task;
      }
    }
    

    5 .倉庫を利用する


    一旦我々が倉庫メソッドを定義するならば、我々は我々のアプリケーションのどこでもこのクラスを輸入することができます.
    コントローラでの実装例を次に示します.
    クリエイトsrc/tasks/task.controller.ts ファイル
    import { Request, Response, NextFunction } from "express"
    
    import { DatabaseRepository } from "../declarations";
    import { Task } from "../entity/Task";
    
    export class TaskController {
      constructor(private repository: DatabaseRepository<Task>) {}
    
      async create(req: Request, res: Response, next: NextFunction): Promise<void> {
        try {
          const body = req.body;
    
          const task = await this.repository.create(body)
    
          res.status(200).json(task);
        } catch (error) {
          next(error);
        }
      }
    }
    
    ルータと準備ができてそれを追加!
    import { Router } from "express";
    
    import { TaskController } from "./task.controller";
    import { TaskRepository } from "./task.repository";
    
    const router = Router();
    
    const controller = new TaskController(new TaskRepository());
    
    router.post("/tasks", controller.create.bind(controller));
    
    export default router;
    

    ✨ 結論


    これらの簡単な手順で我々はアプリケーションにORM(typeRM)を統合している.今、あなたは自分があなたの想像力によって運ばれて、より複雑なことをするようにするための時間です.
    疑わしい場合はGitHubでこのリポジトリを訪れて、それをコンピュータにクローン化できます.ところで、あなたの小さな星を残して😜
    リポジトリhttps://github.com/thebugweb/todo-express-api

    ❤️ フォローミー

  • 🐦 Twitter
  • 🐙 ギタブthebug404