TypeORM là gì?
ORM hay O/R mapping là tên viết tắt của Object Relational Mapping (Ánh xạ quan hệ đối tượng).
ORM một kỹ thuật trong khoa học máy tính để ánh xạ các dữ liệu trong database sang một lớp (class) nhất định trong mã nguồn từ đó code sẽ tường minh và dễ dàng thao tác hơn.
Mô tả dễ hình dung hơn, ví dụ bạn xây dựng 1 đoạn code để query data từ trong database bảng "users" lấy các record ra rồi mapping với 1 class User trong code js. Thì việc đầu tiên là viết câu SQL dạng select * from users; rồi chạy js loop từng reccord ra để new mới. CỰC NHƯ CHÓ!
Thôi thì bây giừo bạn có 1 cái typeORM bạn chỉ cần define như sau:
import { BaseEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";
@Entity()
export class User extends BaseEntity{
@PrimaryGeneratedColumn("uuid")
id!: number
@Column({ unique: true })
email!: string
@Column({ type: "varchar", length: 100,nullable: true })
title: string
@Column()
password!: string
@Column({nullable: true})
phone: string
@CreateDateColumn()
createdAt!: Date
@UpdateDateColumn()
updatedAt!: Date
}
sau khi bạn define xong 1 typeORM thì bạn có thể add thêm logic như sau vào hệ thống action:
const user = new User();
user.name = "Hùng đẹp trai";
user.email = "thanhhung.dev@gmail.com";
user.phone = '324242423432';
await repository.save(user);
const allUsers = await repository.find();
const firstUser = await repository.findOne(1); // find by id
const hung = await repository.findOne({ name: "Hùng đẹp trai",phone: '324242423432'});
await repository.remove(hung);
Đính TypeORM vào server
Bạn chỉ cần tạo 1 cái database trong postgre hoặc mysql sau đó bạn cung cấp 3 vấn đề : database name, username, password là typeORM tự vào DB bạn mapping sao cho đúng giống với code. Bạn khai báo nó trong listen của server như sau :
app.listen(PORT, async () => {
await createConnection({
type: 'postgres',
database: process.env.DATABASE,
username: process.env.DATABASE_USERNAME,
password: process.env.DATABASE_PASSWORD,
logging: true,
synchronize: true,
entities: [ User ]
})
.catch(err => {
console.log("error create connect", err)
})
console.log(`Listening on port ${PORT}`);
});
Ok xong! bạn run app 1 phát dạng như node index.js là nó tự động chạy lệnh. Chúc các bạn thành công