ก้าวแรกไม่เป็นไร ก้าวต่อไป หัดเขียน Nestjs + MongoDB

Devster Hiddenman
1 min readMay 22, 2020

--

หลังจากครั้งที่แล้วเราลองเขียน ระบบจัดการน้ำเก็กฮวยขึ้นมา บทก่อนหน้านี้ คราวนี้เราจะลองทำการต่อกับ MongoDB ดู ถ้าพร้อมแล้วก็มามึนไปด้วยกันต่อเลยฮะ

อ่านจาก Document Nestjs ซัพพอร์ตการเชื่อมต่อกับ MongoDB ได้สองแบบคือใช้งาน Mongoose หรือ TypeORM ส่วนในบทความนี้จะลองต่อโดยเลือกใช้ Mongoose

ติดตั้ง Mongoose #

$ npm install --save @nestjs/mongoose mongoose
$ npm install --save-dev @types/mongoose

อิมพอร์ต MongooseModule ไปยัง AppModule #

เพื่อไม่ให้เป็นการเสียเวลาในการ Set up Database ก็เลยไปใช้ Cloud Service ฟรี ของ MongoDB Atlas ซึ่ง Free tier สามารถใช้งานเดต้าได้ถึง 512 MB

สำหรับขั้นตอนการ Set up ก็ไม่ซับซ้อนนะครับ ทางเว็บทำการอธิบายด้วยภาพไว้ละเอียดดีเลย กดดูได้จากลิ้งคนี้ Get Started with Atlas ซึ่งถ้าสร้างเดต้าเบส เสร็จแล้วเราก็จะได้ Connection String เพื่อเอามาใช้งานดังรูป ข้อดีอีกอย่างก็คือสามารถเซ็ต IP Whitelist ที่เมนู Security/Network Access ได้นะครับจะได้ปลอดภัยยิ่งขึ้น

อัพเดทไฟล์ app.module.ts #

สร้าง Schema #

Schema จะเป็นตัวกำหนดว่าจะมีข้อมูลอะไรบ้างที่จะเก็บไปยัง Database

อัพเดทไฟล์ beers.module.ts #

เพื่อที่จะทำการเรียกใช้โมเดล Beer ผ่านการ @InjectModel ในไฟล์ beers.service.ts ได้เราก็ต้องย้อนกลับมาอัพเดทไฟล์ที่ beers.module.ts ก่อนโดยทำการ Import MongooseModule เข้าไป

อัพเดทไฟล์ beers.service.ts #

อันนี้ก็จะเริ่มเยอะนิดนึงเพราะว่าเราจะทำการ save ข้อมูลจริงๆไปยัง Cloud Database Service ละซึ่งหลักๆที่เปลี่ยนแปลงไปก็คือมีการ

  • @InjectModel ที่ Constructor
  • เรียกใช้ Moongoose API เพื่อเป็นตัวกลางเชื่อมตัวไปยัง Database
  • มีปรับ try…catch ง่ายๆไว้ในกรณีที่หาข้อมูลไม่เจอแต่จริงๆแล้วรู้สึกว่าการ Handle Error ของ Nestjs ถ้าจะทำให้ถูกกระบวนท่าน่าจะต้องไปดูเรื่อง Exception Filters เพิ่ม น่าสนใจดีนะครับ

เหมือนเคยกราบบบบบ ขออภัยถ้าอธิบายไม่ดี ยิ่งเขียนเหมือนยิ่งลวก แต่แอบหวังว่าจะพอมีประโยชน์ให้ลองเป็นไกด์เบื้องต้น ลองไปทำเวอร์ชั่น เดอะเบสของท่านออกมาได้

โค้ดทั้งหมดไปดูได้ที่นี่เลย https://github.com/devster19/nestjs-beer-bckn.git

อันนี้เป็นตัวอย่างจาก official document ของ Nestjs https://docs.nestjs.com/techniques/mongodb

และ document ของ mongoose https://mongoosejs.com/

--

--