[NestJS] Data Persistance MySQL With TypeORM

Image placeholder
แวะมาทักทายกันได้

Database มีให้เลือกใช้มากมาย ตามความเหมาะสมกับงานที่ใช้ NestJS เป็น Library ตัวหนึ่งที่เชื่อมต่อกับฐานข้อมูลได้ทั้ง MySQL, MongoDB หรือ Postgres แต่สำหรับบทความนี้ ขอกล่าวเฉพาะ MySQL ซึ่งเป็น Database แบบ Relation ในการจะ integrate MySQL Database จะใช้ driver หรือ method ที่ชื่อ TypeORM ให้ทำการติดตั้ง mysql server เสียก่อน ผู้เขียนจะใช้ docker ในการ run server ขอยังไม่กล่าววิธีการติดตั้ง mysql server ด้วย docker ในบทความนี้เช่นกัน

ฝากกดโฆษณา Google Ads สัก click  เพื่อเป็นกำลังใจแก่ผู้เขียนด้วยนะครับ

มาเริ่มกันเลย

1.          ติดตั้ง package



2.          กำหนดการเชื่อมต่อ ไปยัง database โดย config ที่ app.module.ts ซึ่ง root ของ project


สร้าง Child Module ที่ชื่อว่า MysqlModule (mysql.module.ts)



จากนั้นก็มาสร้าง entity file ขึ้นมา (mysql.entity.ts)



หลังจากสร้าง Entity แล้วเวลาเรียกใช้ที่ไหนก็จะต้องนำไป import ไว้ที่ module ด้วย



สร้างไฟล์ DTO (Data Transfer Object) ขึ้นมาเป็นตัวรับข้อมูลเพื่อทำหน้าที่ส่งให้กับ service (createUserDto.dto.ts)



สร้างไฟล์ service ขึ้นมา

ตัว TypeOrmModule จะ Inject Repository มาให้เราใช้ด้วยครับ (Repository คือตัวกลางในการติดต่อกับ Datasource ซึ่งในที่นี้ก็คือ Database ของเรา) (mysql.service.ts)



สร้างไฟล์ Controller เพื่อทำ Rest API (mysql.controller.ts)



แล้วนำไฟล์ทั้งหมดมา import ที่ module



ถ้าในกรณีที่ สร้าง child module เอาไว้ จะต้องมา import ลง root module ไว้ด้วย



จากนั้น run คำสั่งเพื่อทดสอบ npm run start:dev



หลังจากที่ Run สำเร็จไม่ติด Error อะไรTypeORM จะสร้าง Table มาให้อัตโนมัติตาม Entity ที่ได้เขียนเอาไว้


ผู้เขียน ได้ทำการ Insert ชื่อขึ้นมา 1 แถวเพื่อทดสอบการ Query ผ่าน API ที่ได้สร้างขึ้นโดยใช้ service POST ซึ่งได้เขียนเอาไว้ในไฟล์ controller ก็จะทดสอบกับ localhost/users



Response ที่ได้กลับมา ก็แสดงผลรับว่าอยู่ในลำดับที่ 2  และ เมื่อดูค่าใน database ก็จะมีอยู่ 2 แถว เพราะผู้เขียน insert ไปก่อนหน้านั้นแล้ว 1 แถว


มาลอง Method Get กันบ้างซึ่งจะเป็น คำสั่ง findAll


แวะมาทักทายกันได้
donate

Categories: Tutorial Tags: #nestjs , 1665