Trong bài viết này, chúng ta sẽ xem xét cách xử lý di chuyển với khung công tác NestJS (khung công tác phát triển ứng dụng phía máy chủ được xây dựng trên Node.js) kết hợp với TypeORM (khung công tác ORM giống như Hibernate và có thể được sử dụng với Typecript và Javascript).
Hãy bắt đầu với cấu hình ban đầu, trước hết, chúng ta cần tạo dự án mới của mình với Nest CLI
npm i -g @nestjs/cli
nest new nestjs-typeorm
Nếu bạn muốn kiểm tra nó, bạn có thể chạy: “npm start” và máy chủ sẽ chạy tại http://localhost:3000, tất nhiên bây giờ, chỉ máy chủ có NestJS mà không có bất kỳ cấu hình TypeORM nào
Để tích hợp với cơ sở dữ liệu SQL và NoSQL, Nest cung cấp @nestjs/typeormgói này. Nest sử dụng TypeORM vì nó là Trình lập bản đồ quan hệ đối tượng (ORM) trưởng thành nhất có sẵn cho TypeScript. Vì nó được viết bằng TypeScript nên nó tích hợp tốt với khung công tác Nest.
Trong trường hợp này, hiện tôi đang sử dụng postgres làm DBMS quan hệ . Vì vậy, tôi cần cài đặt các thư viện tiếp theo:
npm install --save @nestjs/typeorm typeorm pg
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: '',
port: 5432,
username: '',
password: '',
database: '',
entities: [],
synchronize: true,
ssl: true,
extra: {
ssl: {
rejectUnauthorized: false,
},
},
}),
],
})
export class AppModule {}
Ngoài ra, thay vì chuyển một đối tượng cấu hình tới forRoot(), chúng ta có thể tạo một ormconfig.jsontệp trong thư mục gốc của dự án.
[
{
"name": "default",
"type": "postgres",
"host": "",
"port": 5432,
"username": "",
"password": "",
"database": "",
"entities": ["dist/**/*.entity{ .ts,.js}"],
"synchronize": true,
"migrations": ["dist/migrations/*{.ts,.js}"],
"migrationsTableName": "migrations_history",
"migrationsRun": true,
"ssl": true,
"extra": {
"ssl": {
"rejectUnauthorized": false
}
}
}
]
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [TypeOrmModule.forRoot()],
})
export class AppModule {}
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
}
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from 'src/entities/User.entity';
@Module({
imports: [TypeOrmModule.forRoot({
entities: [User],
synchronize: true,
})],
})
export class AppModule {}
Bây giờ cần viết chuyển đổi cho thực thể Người dùng . Hãy tạo một thư mục di chuyển trong thư mục src và thực hiện lệnh tiếp theo:
npx typeorm migration:create -n UserData -d src/migrations
import { MigrationInterface, QueryRunner } from "typeorm";
export class UserData1629150144285 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
queryRunner.query("INSERT INTO User (id, firstName, lastName) VALUES (1, 'John', 'Doe');");
}
public async down(queryRunner: QueryRunner): Promise<void> {
queryRunner.query('DELETE FROM User;');
}
}
npm run build
typeorm migration:run
typeorm migration:run
typeorm migration:revert
Tôi hy vọng rằng bạn thích bài viết này! Hãy nhớ rằng, Thần lực sẽ luôn ở bên bạn.
Hôm nay tôi sẽ tiếp tục Chuỗi câu hỏi phỏng vấn Node JS. Loạt bài này sẽ dựa trên 5 phần bao gồm các câu hỏi quan trọng được hỏi trong các cuộc phỏng vấn từ Cơ bản đến Nâng cao Trước khi bắt đầu.
Hôm nay tôi sẽ tiếp tục Chuỗi câu hỏi phỏng vấn Node JS. Loạt bài này sẽ dựa trên 5 phần bao gồm các câu hỏi quan trọng được hỏi trong các cuộc phỏng vấn từ Cơ bản đến Nâng cao Trước khi bắt đầu.
Bất kỳ lý trí nào cũng biết rằng giới chính trị và truyền thông bị chi phối bởi cánh tả, thậm chí là cực tả, một tình trạng tạo ra sự mất cân bằng trong diễn ngôn chính trị. Trong lĩnh vực tôn giáo, sự mất cân bằng này có thể thấy rõ ràng: các tờ báo và mạng lưới cánh tả không vội vàng bảo vệ đức tin Cơ đốc.
Bạn có thể là Điều tra viên OSINT, Người chơi CTF hoặc đơn giản là người nhận được các cuộc gọi spam. Ai đó đang cố xác minh số bạn đã thấy trong quảng cáo.
(Cảnh báo- Đây là tác phẩm Châm biếm, nhằm mục đích Lật đổ một cách vui vẻ- Chắc chắn không dành cho trẻ em) Bạn đã từng thấy bố mẹ mình trốn trong bếp và hút những điếu thuốc bốc mùi đó. Họ nói với bạn.
Tuần trước, tôi nhận thấy một thông cáo báo chí, được gửi qua PressGazette (một trang web tin tức truyền thông của Anh). Bài báo thông báo rằng Acast, công ty quảng cáo và lưu trữ podcast của Scandi, sẽ lãnh đạo một tập đoàn gồm các nhà xuất bản “có lẽ là có ảnh hưởng nhất” trong lĩnh vực podcasting.