วิธีเชื่อมต่อฐานข้อมูล MongoDB บน express.js

October 13, 2015 4:20 pm MongoDB, Node.js

express.js เป็น node.js Web Framework ที่ได้รับความนิยมมากๆตัวนึงในตอนนี้ครับ ผมก็กำลังศึกษาและพิจารณาที่จะใช้ในโปรเจ็คของลูกค้าอยู่ (แทนการใช้งาน PHP) วันนี้เลยลองทำให้ตัว express.js สามารถเชื่อมต่อและทำงานกับฐานข้อมูล MongoDB กันครับ

เบื้องต้น ทาง express.js ได้แนะนำ Library ตัวนึงคือ mongoskin ซึ่งการใช้ mongoskin นั้นง่ายมาก แต่มันจะไม่ยืดหยุ่นและไม่เป็นไปตามหลัก Design Pattern Model–view–controller (MVC) ซึ่งผมจะแนะนำ Library อีกตัวนึง ที่นิยมใช้ใน node.js ในการเชื่อมต่อฐานข้อมูล MongoDB ชื่อว่า mongoose

ตัว mongoose สนับสนุน model driver ทำให้เราสามารถร่างตัว model ขึ้นมาเพื่อรองรับข้อมูลที่จะส่งเข้าไป MongoDB ได้ โดยการสร้าง model ขึ้นมาก่อนที่จะส่งไปยังฐานข้อมูล ทำให้เราสามารถตรวจสอบข้อมูลที่รับเข้ามาก่อน ว่ารูปแบบของข้อมูลที่รับเข้ามา ตรงกับที่เราต้องการรับเข้ามาหรือไม่ และที่สำคัญ ทำให้เราสามารถพัฒนาเว็บไซต์ ให้เป็นไปตามหลัก Design Pattern MVC ได้ด้วย

เรามาดูวิธีใช้ mongoose กับ express.js แบบง่ายๆกันครับ วิธีการมีไม่กี่ขั้นตอน

  1. ผมจะลง library ตัวนี้ ผ่าน npm ซึ่งเป็น Package manager ของ node.js โดยวิธีการลงง่ายๆ เพียงเราระบุ mongoose พร้อมกับเวอร์ชันที่เราต้องการ ลงไปในไฟล์ package.json ดังรูปตัวอย่างครับ
    Screen Shot 2558-10-13 at 3.38.19 PM
  2. ใช้คำสั่งติดตั้ง Package ที่เราระบุเอาไว้ โดยเข้าไปยังที่เก็บไฟล์ package.json ด้วย Command Line หรือ Terminal แล้วใช้คำสั่ง npm install
  3. หลังจากที่ติดตั้งเรียบร้อยแล้ว เราจะต้องเตรียม MongoDB Server ของเราให้เรียบร้อย พร้อมใช้งานนะครับ (หรือไปขอใช้ตาม MongoDB as a Service ดูครับ)
  4. ถ้าเราไปขอใช้งานตาม MongoDB as a Service เขาจะให้ URI ที่ใช้ในการเชื่อมต่อมาให้ครับ หลังจากที่เราได้ URI มาแล้ว ให้เปิดไฟล์ app.js ขึ้นมาแก้ไข
  5. การแก้ไขไฟล์ app.js ให้คุณ แก้ไขตามลำดับนะครับ
    Screen Shot 2558-10-13 at 3.48.32 PM
    คำอธิบาย : ให้คุณสร้างตัวแปรชื่อ mongoose แล้วไปเรียกใช้ mongoose หลังจากนั้น ให้นำ URI ที่ทาง MongoDB as a Service ให้มา นำมาใส่ตัวแปร mongoUri แล้วให้ประกาศเอาไว้ ก่อนจะชี้ตัว Route นะครับ (หากคุณประกาศหลัง Route จะทำให้ Route วิ่งหา Model ไม่เจอ)
  6. ให้สร้าง Folder ที่ชื่อ models เอาไว้ตรงที่เดียวกับ app.js เพื่อใช้ในการเก็บไฟล์ Model
  7. เข้าไปใน Folder Model ที่สร้างขึ้นมา สร้างไฟล์ Model เพิ่มขึ้นมาใหม่ (ชื่อตาม collection ที่เราออกแบบไว้)
  8. เปิดไฟล์ที่สร้างขึ้นมาใหม่ โดยมีโค๊ดตามด้านล่างนี้ แล้วบันทึก
  9. หลังจากนั้น ให้คุณเปิดไฟล์ Route ที่ต้องการให้ติดต่อฐานข้อมูลขึ้นมา (ของผมยกตัวอย่างไฟล์ route/users_api.js)
  10. แก้ไขไฟล์ Route ตามที่ต้องการ (ดูตัวอย่างเป็นแนวทางนะครับ)
  11. หลังจากที่คุณรันแล้วไปยัง Path ที่ Route Function นี้ไว้ ก็จะได้ตามรูปนี้
    Screen Shot 2558-10-13 at 4.18.49 PM

หากได้ตามรูปนี้ แสดงว่าระบบทำงานได้สมบูรณ์ สามารถเชื่อมต่อฐานข้อมูลและบันทึกข้อมูลได้เรียบร้อยแล้วครับ

Ref

  1. mongoose example for express
  2. http://expressjs.com/guide/database-integration.html#mongo
  3. http://mongoosejs.com/