ノード内のORMの統合簡単なステップ
16150 ワード
こんにちは開発者!このポストでは、基本的な操作CRUD(CREATE、READ、UPDATE、DELETE)を実行するデータベース(MySQL)と対話するためにORM(typeRM)を実装します.始めましょう.
🐦 Twitter
🐙 ギタブthebug404
このセクションでは、モデル、グローバル設定、リポジトリの定義などを定義します.
また、githubにこのリポジトリを訪れて、それをあなたのコンピュータに複製することもできます.ところで、あなたの小さな星を残して😜
リポジトリhttps://github.com/thebugweb/todo-express-api
クリエイト
クリエイト データベースの種類(タイプ、ホスト、ユーザ名)を指定します エンティティを登録します. 我々の移行を登録してください. その他の機能.
設定( src/config/database . ts )をインポートし、データベースとの接続を確立するためにtypeRMを初期化します
クリエイト
一旦我々が倉庫メソッドを定義するならば、我々は我々のアプリケーションのどこでもこのクラスを輸入することができます.
コントローラでの実装例を次に示します.
クリエイト
これらの簡単な手順で我々はアプリケーションにORM(typeRM)を統合している.今、あなたは自分があなたの想像力によって運ばれて、より複雑なことをするようにするための時間です.
疑わしい場合はGitHubでこのリポジトリを訪れて、それをコンピュータにクローン化できます.ところで、あなたの小さな星を残して😜
リポジトリhttps://github.com/thebugweb/todo-express-api
🐦 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
❤️ フォローミー
Reference
この問題について(ノード内のORMの統合簡単なステップ), 我々は、より多くの情報をここで見つけました https://dev.to/ivanzm123/integrating-an-orm-in-nodejs-in-5-easy-steps-d4aテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol