PART 2: NESTJS - TypeORM(SQL)
This post hasn't been updated for 4 years
LỜi GIỚI THIỆU
- Nestjs có thể dụng các cơ sở dữ liệu khác nhau như MongoDB , sql...
- Để connect với sql cũng có rất nhiều package hỗ trợ như TypeORM, Sequelize.
- Nhưng bài viết ngày hôm này mình sẽ cùng các bạn tìm hiểu về package TypeORM vì mình thấy TypeORM được sử dụng phổ biến hơn hôm khác mình sẽ tìm hiểu về ưu điểm, nhược điểm của các package
TypeORM
- Tích hợp TypeORM để connect với cơ sở dữ liệu SQL và NoQuery. Nhà nest cung cấp gói package
@Nestjs/typeorm
. - Như Nest có nói đây là package trình ánh xạ quan hệ đối tượng hoàn thiện nhất có sẵn cho TypeScript. Và cũng vì nó được viết bằng TypeScript nên nó rất thích hợp với nest(được ví như cậu với mợ ))
Bước 1: install package
npm install --save @nestjs/typeorm typeorm mysql
Install ts-node globally để dễ thao tác lệnh hơn
npm install -g ts-node
Thêm typeorm command ở trong scripts package.json
"scripts" {
...
"typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js"
}
giờ câu lệnh của bạn sẽ dễ thao tác hơn.
vd: npm run typeorm migration:run
bước 2: khởi tạo new TypeORM project.
typeorm init
khởi tạo xong chúng t có cấu trúc thư mục của typeorm như sau:
MyProject
├── src // place of your TypeScript code
│ ├── entity // place where your entities (database models) are stored
│ │ └── User.ts // sample entity
│ ├── migration // place where your migrations are stored
│ └── index.ts // start point of your application
├── .gitignore // standard gitignore file
├── ormconfig.json // ORM and database connection configuration
├── package.json // node module dependencies
├── README.md // simple readme file
└── tsconfig.json // TypeScript compiler options
bước 3: config connect database.
{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "test",
"password": "test",
"database": "test",
"synchronize": true,
"logging": false,
"entities": [
"src/entity/**/*.ts"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
]
}
bước 4: Create a new migration
typeorm migration:create -n UserMigration
UserMigration
được sinh ra trong folder src/migration
như đã config ở trên.
sau đó ta được file UserMigration
có cấu trúc như sau:
import {MigrationInterface, QueryRunner, Table} from "typeorm";
export class UserMigration1584696612114 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
}
public async down(queryRunner: QueryRunner): Promise<any> {
}
}
Mình sẽ ví dụ tạo 1 bảng users như sau:
import {MigrationInterface, QueryRunner, Table} from "typeorm";
export class UserMigration1584696612114 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.createTable(new Table({
name: "user",
columns: [
{
name: "id",
type: "int",
isPrimary: true
},
{
name: "first_name",
type: "varchar",
},
{
name: "last_name",
type: "varchar",
},
{
name: "age",
type: "int",
}
]
}), true)
}
public async down(queryRunner: QueryRunner): Promise<any> {
}
}
sau đó mình sẽ chậy lệnh migration:
npm run typeorm migration:run
chạy xong thì chúng ta sẽ có bảng users như ảnh:
http://prntscr.com/rjjahm
Tổng kết
Trên là bài tìm hiểu cơ bản typeORM - nestjs của mình. Mình cũng là người mới học nên có j hay ho hơn mọi người góp ý nhé.
Bài sau mình sẽ tìm hiểu về model va Repository xem có j thú vị không.
THANKS.
All Rights Reserved