Node.js MongoDB บทช่วยสอนพร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
Node.js MongoDB การผสานรวมนี้ช่วยให้แอปพลิเคชัน Node สามารถเชื่อมต่อกับฐานข้อมูล NoSQL ดำเนินการ CRUD และแสดงข้อมูลแบบเรียลไทม์ผ่านเส้นทาง Express โดยใช้ไดรเวอร์ mongodb ดั้งเดิมร่วมกับ Mongoose สำหรับการสร้างแบบจำลองข้อมูลตามสคีมา

โดยส่วนใหญ่แล้ว แอปพลิเคชันบนเว็บในปัจจุบันจะมีระบบจัดเก็บข้อมูลอยู่เบื้องหลัง ตัวอย่างเช่น หากพิจารณาร้านค้าออนไลน์ping ในแอปพลิเคชัน ข้อมูลต่างๆ เช่น ราคาของสินค้า จะถูกจัดเก็บไว้ในฐานข้อมูล
กรอบงาน Node js สามารถทำงานกับฐานข้อมูลที่มีทั้งเชิงสัมพันธ์ (เช่น Oracle และ MS SQL Server) และฐานข้อมูลที่ไม่เกี่ยวข้อง (เช่น MongoDB- ในบทช่วยสอนนี้ เราจะดูว่าเราสามารถใช้ฐานข้อมูลจากภายในแอปพลิเคชัน Node js ได้อย่างไร
Node.js และฐานข้อมูล NoSQL
ตลอดหลายปีที่ผ่านมา ฐานข้อมูล NoSQL เช่น MongoDB และฐานข้อมูลเชิงสัมพันธ์ เช่น MySQL ฐานข้อมูลได้รับความนิยมอย่างมากในการจัดเก็บข้อมูล ความสามารถของฐานข้อมูลเหล่านี้ในการจัดเก็บข้อมูลทุกประเภท โดยเฉพาะอย่างยิ่งในรูปแบบใดก็ได้ คือสิ่งที่ทำให้ฐานข้อมูลเหล่านี้ถูกใช้งานอย่างแพร่หลาย
Node.js มีความสามารถในการทำงานร่วมกับทั้งสองอย่าง MySQL และ MongoDB เป็นฐานข้อมูล ในการใช้ฐานข้อมูลใดฐานข้อมูลหนึ่งเหล่านี้ คุณจะต้องดาวน์โหลดและใช้โมดูลที่จำเป็นโดยใช้ Node package manager
ใช้เพื่อการ MySQLโมดูลที่ต้องการคือ “mysql” MongoDBนักพัฒนาสามารถติดตั้งเวอร์ชันดั้งเดิมอย่างเป็นทางการได้ MongoDB driver ซึ่งเป็นแพ็กเกจที่ใช้ในตัวอย่างโค้ดทั้งหมดในบทความนี้ หรือไลบรารีแบบใช้สคีมา เช่น พังพอน เมื่อแอปพลิเคชันต้องการโครงสร้างที่ชัดเจนมากขึ้น
ด้วยโมดูลเหล่านี้ คุณสามารถดำเนินการต่อไปนี้ใน Node.js ได้
- จัดการการรวมการเชื่อมต่อ – ที่นี่คุณสามารถระบุจำนวนการเชื่อมต่อได้ MySQL การเชื่อมต่อฐานข้อมูลที่ควรดูแลรักษาและบันทึกโดย Node.js
- สร้างและปิดการเชื่อมต่อกับฐานข้อมูล ไม่ว่าในกรณีใด คุณสามารถจัดให้มีฟังก์ชันการโทรกลับซึ่งสามารถเรียกเมื่อใดก็ตามที่ดำเนินการวิธีการเชื่อมต่อ "สร้าง" และ "ปิด"
- สามารถดำเนินการสืบค้นเพื่อรับข้อมูลจากฐานข้อมูลที่เกี่ยวข้องเพื่อดึงข้อมูล
- การจัดการข้อมูล เช่น การแทรกข้อมูล การลบ และการอัปเดตข้อมูล สามารถทำได้ด้วยโมดูลเหล่านี้
สำหรับหัวข้อที่เหลือ เราจะมาดูกันว่าเราจะทำงานร่วมกับมันได้อย่างไร MongoDB ฐานข้อมูลภายใน Node.jsโดยเริ่มจากการเปรียบเทียบอย่างรวดเร็วระหว่างสองวิธีที่พบบ่อยที่สุดในการพูดคุยกับ MongoDB จากโปรเจ็กต์ Node.js
MongoDB Native Driver กับ Mongoose ใน Node.js
ชื่อโมดูลที่กล่าวถึงข้างต้นอาจทำให้สับสนได้ เนื่องจาก Node.js มีวิธีการสื่อสารอยู่สองวิธีที่แตกต่างกัน MongoDB: ชาวพื้นเมือง MongoDB คนขับและ พังพอน ODM (ไลบรารีการสร้างแบบจำลองข้อมูลเชิงวัตถุ) ตัวอย่างโค้ดทั้งหมดในบทความนี้ใช้ไดรเวอร์ดั้งเดิมที่ติดตั้งมาพร้อมกับระบบ npm ติดตั้ง mongodb และสามารถเข้าถึงได้ผ่านทาง มงโกไคลเอนต์Mongoose ห่อหุ้มไดรเวอร์ตัวเดียวกันนั้นและเพิ่มคำจำกัดความของสคีมา การตรวจสอบความถูกต้อง และเมธอดโมเดลที่นำกลับมาใช้ใหม่ได้ ซึ่งเหมาะสำหรับแอปพลิเคชันขนาดใหญ่ที่ต้องการโครงสร้างข้อมูลที่คาดเดาได้ในหลายๆ คอลเลกชัน การทำความเข้าใจความแตกต่างตั้งแต่เริ่มต้นจะช่วยหลีกเลี่ยงความสับสนเมื่อติดตั้งแพ็กเกจหรืออ่านเอกสาร Node.js อื่นๆ MongoDB ตัวอย่างออนไลน์ ตารางด้านล่างเปรียบเทียบทั้งสองตัวเลือก เพื่อให้นักพัฒนาสามารถเลือกเครื่องมือที่เหมาะสมสำหรับโครงการนั้นๆ ได้
| แง่มุม | ไดรเวอร์ MongoDB ดั้งเดิม | พังพอน |
|---|---|---|
| การติดตั้ง | npm ติดตั้ง mongodb | ติดตั้ง mongoose ด้วยคำสั่ง npm |
| การบังคับใช้โครงร่าง | ไม่มี เอกสารยังคงมีความยืดหยุ่น | กำหนดผ่านอ็อบเจ็กต์ Schema |
| โค้งการเรียนรู้ | ต่ำกว่า ใกล้เคียงกับวัตถุดิบดิบ MongoDB คำสั่ง | ระดับสูงขึ้น เพิ่มเลเยอร์ API ของตัวเองเข้าไป |
| เหมาะสำหรับ | สคริปต์ขนาดเล็กและโค้ดที่คำนึงถึงประสิทธิภาพ | แอปพลิเคชันขนาดใหญ่ที่มีโมเดลข้อมูลที่สอดคล้องกัน |
เคล็ดลับ: ขณะเรียนรู้แกนหลัก ให้ใช้ไดรเวอร์ดั้งเดิมต่อไป MongoDB คำสั่ง จากนั้นจึงย้ายไปยัง พังพอน เมื่อแอปพลิเคชันต้องการตรวจสอบความถูกต้องของสคีมาในหลายคอลเลกชัน
การใช้ MongoDB และ Node.js
เมื่อได้ชี้แจงคำศัพท์แล้ว ส่วนที่เหลือของบทความนี้จะใช้ไดรเวอร์ดั้งเดิมเท่านั้น ตามที่ปรากฏในตัวอย่างโค้ดด้านล่างทุกประการ ดังที่ได้กล่าวไว้ในหัวข้อก่อนหน้านี้ MongoDB เป็นหนึ่งในฐานข้อมูลยอดนิยมที่ใช้คู่กับ Node.js
ในบทนี้ เราจะมาดูกันว่าวิธีการสร้างความสัมพันธ์กับ... MongoDB ฐานข้อมูล และวิธีการดำเนินการตามปกติในการอ่านข้อมูลจากฐานข้อมูล รวมถึงการแทรก ลบ และอัปเดตระเบียนในฐานข้อมูล MongoDB ฐานข้อมูล
สำหรับวัตถุประสงค์ของบทนี้ สมมติว่าเรามีข้อมูลด้านล่างนี้ MongoDB ข้อมูลในสถานที่
ชื่อฐานข้อมูล: EmployeeDB
ชื่อคอลเลกชัน: พนักงาน
Documents
{
{Employeeid : 1, Employee Name : Guru99},
{Employeeid : 2, Employee Name : Joe},
{Employeeid : 3, Employee Name : Martin},
}
- การติดตั้งโมดูล NPM
คุณต้องมีไดรเวอร์เพื่อเข้าถึง Mongo จากภายในแอปพลิเคชัน Node มีไดรเวอร์ Mongo จำนวนมากให้เลือก MongoDB เป็นหนึ่งในความนิยมมากที่สุด หากต้องการติดตั้ง MongoDB โมดูลให้รันคำสั่งด้านล่าง
npm ติดตั้ง mongodb
- การสร้างและปิดการเชื่อมต่อกับ MongoDB ฐานข้อมูล ข้อมูลโค้ดด้านล่างแสดงวิธีการสร้างและปิดการเชื่อมต่อกับ MongoDB ฐานข้อมูล
Code คำอธิบาย:
- ขั้นตอนแรกคือการรวม MongoDB โมดูลไดรเวอร์นั้นสร้างขึ้นโดยใช้ฟังก์ชัน `require` เมื่อโมดูลนี้ถูกติดตั้งแล้ว เราสามารถใช้ฟังก์ชันที่จำเป็นที่มีอยู่ในโมดูลนี้เพื่อสร้างการเชื่อมต่อกับฐานข้อมูลได้
- ต่อไปเราระบุสตริงการเชื่อมต่อกับฐานข้อมูล ในสตริงการเชื่อมต่อ มีค่าคีย์ 3 ค่าที่ถูกส่งผ่าน
- ส่วนแรกคือ 'mongodb' ซึ่งระบุว่าเรากำลังเชื่อมต่อกับฐานข้อมูล mongoDB
- ถัดไปคือ 'localhost' ซึ่งหมายความว่าเรากำลังเชื่อมต่อกับฐานข้อมูลบนเครื่องท้องถิ่น
- ถัดไปคือ 'EmployeeDB' ซึ่งเป็นชื่อของฐานข้อมูลที่เรากำหนดไว้ MongoDB ฐานข้อมูล
- ขั้นตอนต่อไปคือการเชื่อมต่อกับฐานข้อมูลของเรา ฟังก์ชัน `connect` รับพารามิเตอร์ของเรา URL และมีฟังก์ชันให้ระบุฟังก์ชันเรียกกลับ (callback function) ซึ่งจะถูกเรียกเมื่อมีการเปิดการเชื่อมต่อกับฐานข้อมูล ทำให้เราทราบได้ว่าการเชื่อมต่อกับฐานข้อมูลสำเร็จหรือไม่
- ในฟังก์ชันนี้ เรากำลังเขียนสตริง "สร้างการเชื่อมต่อ" ลงในคอนโซลเพื่อระบุว่ามีการสร้างการเชื่อมต่อที่สำเร็จ
- สุดท้ายนี้ เรากำลังปิดการเชื่อมต่อโดยใช้คำสั่ง db.close
หากโค้ดด้านบนทำงานอย่างถูกต้อง สตริง “เชื่อมต่อแล้ว” จะถูกเขียนลงในคอนโซลดังที่แสดงด้านล่าง
- การสืบค้นข้อมูลใน MongoDB ฐานข้อมูล - ใช้ MongoDB ไดรเวอร์ที่เรายังสามารถดึงข้อมูลจาก MongoDB ฐานข้อมูล ส่วนด้านล่างนี้จะแสดงวิธีการใช้ไดรเวอร์เพื่อดึงเอกสารทั้งหมดจากคอลเลกชันพนักงานในฐานข้อมูล EmployeeDB ของเรา นี่คือคอลเลกชันในฐานข้อมูลของเรา MongoDB ฐานข้อมูลซึ่งประกอบด้วยเอกสารที่เกี่ยวข้องกับพนักงานทั้งหมด แต่ละเอกสารมีรหัสออบเจ็กต์ ชื่อพนักงาน และรหัสพนักงานเพื่อกำหนดค่าของเอกสาร
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { var cursor = db.collection('Employee').find(); cursor.each(function(err, doc) { console.log(doc); }); });
Code คำอธิบาย:
- ขั้นตอนแรก เราจะสร้างเคอร์เซอร์ (เคอร์เซอร์คือตัวชี้ที่ใช้ชี้ไปยังเรคอร์ดต่างๆ ที่ดึงมาจากฐานข้อมูล จากนั้นจะใช้เคอร์เซอร์ในการวนซ้ำผ่านเรคอร์ดต่างๆ ในฐานข้อมูล ในที่นี้เรากำหนดตัวแปรชื่อ cursor ซึ่งจะใช้เก็บตัวชี้ไปยังเรคอร์ดที่ดึงมาจากฐานข้อมูล) ซึ่งชี้ไปยังเรคอร์ดที่ดึงมาจากคอลเลกชัน MongoDB นอกจากนี้เรายังสามารถระบุคอลเลกชัน 'Employee' ที่ต้องการดึงเรคอร์ดได้อีกด้วย ฟังก์ชัน find() ใช้เพื่อระบุว่าเราต้องการดึงเอกสารทั้งหมดจากคอลเลกชันนั้น MongoDB การเก็บ
- ตอนนี้เรากำลังวนซ้ำผ่านเคอร์เซอร์ของเรา และสำหรับแต่ละเอกสารในเคอร์เซอร์ เราจะเรียกใช้ฟังก์ชัน
- ฟังก์ชั่นของเราคือเพียงพิมพ์เนื้อหาของแต่ละเอกสารไปยังคอนโซล
บันทึก: - นอกจากนี้ยังสามารถดึงข้อมูลเฉพาะจากฐานข้อมูลได้ โดยการระบุเงื่อนไขการค้นหาในฟังก์ชัน find() ตัวอย่างเช่น สมมติว่าคุณต้องการดึงข้อมูลที่มีชื่อพนักงานดังนี้ Guru99 ดังนั้นข้อความนี้สามารถเขียนได้ดังนี้
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
หากโค้ดด้านบนถูกดำเนินการสำเร็จ ผลลัพธ์ต่อไปนี้จะปรากฏในคอนโซลของคุณ
Output:
จากผลลัพธ์ที่ได้
- คุณจะสามารถเห็นได้ชัดเจนว่าเอกสารทั้งหมดจากคอลเล็กชันถูกเรียกค้นมาได้ ซึ่งทำได้โดยใช้เมธอด find() ของการเชื่อมต่อ mongoDB (db) และวนซ้ำผ่านเอกสารทั้งหมดโดยใช้เคอร์เซอร์
- การแทรกเอกสารในคอลเลกชัน – สามารถแทรกเอกสารลงในคอลเลกชันได้โดยใช้วิธี insertOne ที่จัดทำโดย MongoDB ไลบรารี ตัวอย่างโค้ดด้านล่างนี้แสดงให้เห็นวิธีการแทรกเอกสารเข้าในคอลเล็กชั่น MongoDB
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').insertOne({ Employeeid: 4, EmployeeName: "NewEmployee" }); });
Code คำอธิบาย:
- ที่นี่เราใช้วิธี insertOne จาก MongoDB ไลบรารีเพื่อแทรกเอกสารลงในคอลเลกชันพนักงาน
- เรากำลังระบุรายละเอียดเอกสารว่าจะต้องแทรกอะไรเข้าไปในคอลเลกชันพนักงาน
หากคุณตรวจสอบเนื้อหาของคุณแล้ว MongoDB ฐานข้อมูล คุณจะพบบันทึกที่มี Employeeid ของ 4 และ EmployeeName ของ "NewEmployee" แทรกอยู่ในคอลเลกชันของพนักงาน
หมายเหตุ คอนโซลจะไม่แสดงผลลัพธ์ใดๆ เนื่องจากบันทึกถูกแทรกลงในฐานข้อมูล และไม่สามารถแสดงเอาต์พุตได้ที่นี่
เพื่อตรวจสอบว่าข้อมูลได้รับการแทรกลงในฐานข้อมูลอย่างถูกต้องแล้ว คุณจำเป็นต้องดำเนินการคำสั่งต่อไปนี้ MongoDB
- ใช้ EmployeeDB
- db.Employee.find({รหัสพนักงาน :4 })
คำสั่งแรกช่วยให้แน่ใจว่าคุณเชื่อมต่อกับฐานข้อมูล EmployeeDb คำสั่งที่สองค้นหาเรกคอร์ดซึ่งมีรหัสพนักงานเป็น 4
- การอัพเดตเอกสารในคอลเลกชัน – สามารถอัปเดตเอกสารในคอลเลกชันได้โดยใช้วิธี updateOne ที่จัดทำโดย MongoDB ไลบรารี ตัวอย่างโค้ดด้านล่างนี้แสดงวิธีการอัปเดตเอกสารในคอลเล็กชั่น MongoDB
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').updateOne({ "EmployeeName": "NewEmployee" }, { $set: { "EmployeeName": "Mohan" } }); });
Code คำอธิบาย:
- ที่นี่เราใช้วิธี "updateOne" จาก MongoDB ไลบรารีซึ่งใช้เพื่ออัปเดตเอกสารในคอลเล็กชั่นของ MongoDB
- เรากำลังระบุเกณฑ์การค้นหาว่าเอกสารใดจำเป็นต้องได้รับการอัปเดต ในกรณีของเรา เราต้องการค้นหาเอกสารที่มีชื่อพนักงานเป็น “NewEmployee”
- จากนั้นเราต้องการตั้งค่าของ EmployeeName ของเอกสารจาก "NewEmployee" เป็น "Mohan"
หากคุณตรวจสอบเนื้อหาของคุณแล้ว MongoDB ฐานข้อมูล คุณจะพบบันทึกที่มี Employeeid ของ 4 และ EmployeeName ของ “Mohan” ที่อัปเดตในคอลเลกชันของพนักงาน
เพื่อตรวจสอบว่าข้อมูลได้รับการอัพเดทในฐานข้อมูลอย่างถูกต้อง คุณจำเป็นต้องดำเนินการคำสั่งต่อไปนี้ MongoDB
- ใช้ EmployeeDB
- db.Employee.find({รหัสพนักงาน :4 })
คำสั่งแรกช่วยให้แน่ใจว่าคุณเชื่อมต่อกับฐานข้อมูล EmployeeDb คำสั่งที่สองค้นหาเรกคอร์ดซึ่งมีรหัสพนักงานเป็น 4
- การลบเอกสารในคอลเลกชัน – สามารถลบเอกสารในคอลเลกชันได้โดยใช้วิธี “deleteOne” ที่จัดทำโดย MongoDB ไลบรารี ตัวอย่างโค้ดด้านล่างนี้แสดงวิธีการลบเอกสารในคอลเล็กชั่น MongoDB
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').deleteOne( { "EmployeeName": "Mohan" } ); });
Code คำอธิบาย:
- ที่นี่เราใช้วิธี "deleteOne" จาก MongoDB ไลบรารีซึ่งใช้ในการลบเอกสารในคอลเล็กชั่นของ MongoDB
- เรากำลังระบุเกณฑ์การค้นหาที่ต้องลบเอกสาร ในกรณีของเรา เราต้องการค้นหาเอกสารที่มีชื่อพนักงานเป็น “Mohan” และลบเอกสารนี้
หากคุณตรวจสอบเนื้อหาของคุณแล้ว MongoDB คุณจะพบบันทึกที่มี Employeeid ของ 4 และ EmployeeName ของ “Mohan” ที่ถูกลบออกจากคอลเลกชันของพนักงาน
เพื่อตรวจสอบว่าข้อมูลได้รับการอัพเดทในฐานข้อมูลอย่างถูกต้อง คุณจำเป็นต้องดำเนินการคำสั่งต่อไปนี้ MongoDB
- ใช้ EmployeeDB
- db.พนักงาน.find()
คำสั่งแรกช่วยให้แน่ใจว่าคุณเชื่อมต่อกับฐานข้อมูล EmployeeDb คำสั่งที่สองค้นหาและแสดงเรกคอร์ดทั้งหมดในคอลเลกชันของพนักงาน ที่นี่คุณสามารถดูได้ว่าบันทึกถูกลบไปแล้วหรือไม่
Async/Await สมัยใหม่ MongoDB การเชื่อมต่อใน Node.js
การขอ MongoClient.connect(url, callback) รูปแบบที่ใช้ตลอดทั้งบทความนี้ตรงกับ MongoDB เวอร์ชันไดรเวอร์ Node.js ที่ใช้ในขณะที่เขียนตัวอย่างข้างต้นนั้น ไดรเวอร์เวอร์ชันล่าสุดยังคงรองรับรูปแบบการเรียกกลับแบบนั้นอยู่ แต่โครงการใหม่ส่วนใหญ่ในปัจจุบันนิยมใช้ Promise และ async/await มากกว่า เพราะโค้ดที่ได้จะอ่านง่ายจากบนลงล่างโดยไม่มีการเรียกกลับซ้อนกัน ขั้นตอนด้านล่างนี้จะเขียนการเชื่อมต่อพนักงานแบบเดียวกันใหม่โดยใช้ไวยากรณ์ที่ทันสมัยกว่า
- สร้างอินสแตนซ์ MongoClient เพียงหนึ่งเดียวภายนอกฟังก์ชันใดๆ โดยส่งสตริงการเชื่อมต่อเพียงครั้งเดียว ตัวอย่างเช่น const client = new MongoClient(url);
- โทร await client.connect() ใช้ฟังก์ชันอะซิงโครนัสเพื่อเปิดการเชื่อมต่อแทนการส่งฟังก์ชันเรียกกลับ (callback)
- รับฐานข้อมูลด้วย client.db('EmployeeDB') แทนที่จะพึ่งพาอ็อบเจ็กต์ที่ส่งคืนภายในฟังก์ชันเรียกกลับ
- เรียกใช้คำสั่งค้นหาด้วย รอคอย, ตัวอย่างเช่น await db.collection('Employee').find().toArray()ซึ่งจะส่งคืนอาร์เรย์โดยตรง แทนที่จะต้องใช้ฟังก์ชันเรียกกลับของเคอร์เซอร์
- ปิดการเชื่อมต่อกับ await client.close() เขียนโค้ดไว้ในบล็อก finally เพื่อให้โค้ดทำงานเสมอ แม้ว่าการสืบค้นจะเกิดข้อผิดพลาดก็ตาม
const { MongoClient } = require('mongodb'); const url = 'mongodb://localhost:27017'; const client = new MongoClient(url); async function run() { try { await client.connect(); const db = client.db('EmployeeDB'); const employees = await db.collection('Employee').find().toArray(); console.log(employees); } finally { await client.close(); } } run().catch(console.error);
ทั้งสองรูปแบบเชื่อมต่อกับฐานข้อมูล EmployeeDB และคอลเลกชัน Employee เดียวกัน ดังนั้นโค้ดที่ใช้ Callback เดิมจึงไม่จำเป็นต้องเขียนใหม่ในทันที ทั้งสองวิธีสามารถใช้งานร่วมกันได้ในขณะที่โครงการกำลังย้ายระบบไปทีละขั้นตอน และการเลือกใช้ส่วนใหญ่ขึ้นอยู่กับว่าโครงการใดต้องการใช้แบบใด MongoDB เวอร์ชันไดรเวอร์ Node.js ในไฟล์ package.json ได้ถูกกำหนดไว้แล้ว
วิธีสร้างแอป node express ด้วย MongoDB เพื่อจัดเก็บและให้บริการเนื้อหา
เมื่อได้กล่าวถึงรูปแบบการเชื่อมต่อทั้งสองแบบแล้ว ส่วนถัดไปจะนำรูปแบบ Callback แบบคลาสสิกมาใช้ภายในแอปพลิเคชัน Express อย่างสมบูรณ์ เนื่องจากเป็นไวยากรณ์ที่เซิร์ฟเวอร์ตัวอย่างดั้งเดิมด้านล่างใช้ การสร้างแอปพลิเคชันด้วยการผสมผสานระหว่าง Express และ MongoDB เป็นเรื่องปกติในทุกวันนี้
เมื่อทำงานกับ Javaต้นฉบับ สำหรับแอปพลิเคชันบนเว็บ เรามักจะได้ยินคำว่า MEAN stack
- คำว่า MEAN stack หมายถึงคอลเลกชันของ Javaเทคโนโลยีที่ใช้สคริปต์เพื่อพัฒนาแอพพลิเคชันเว็บ
- MEAN เป็นตัวย่อสำหรับ MongoDB, เอ็กซ์เพรสJS, AngularJSและ Node.js
ดังนั้นจึงเป็นการดีเสมอที่จะทำความเข้าใจว่า Node.js และ MongoDB ทำงานร่วมกันเพื่อส่งมอบแอปพลิเคชันที่โต้ตอบกับฐานข้อมูลแบ็กเอนด์
มาดูตัวอย่างง่ายๆ ของการใช้ “express” และ “MongoDB" ด้วยกัน. ตัวอย่างของเราจะใช้ประโยชน์จากคอลเลกชันพนักงานเดียวกันใน MongoDB ฐานข้อมูล EmployeeDB
ต่อไปนี้เราจะนำ Express มาใช้เพื่อแสดงข้อมูลบนหน้าเว็บของเราเมื่อผู้ใช้ร้องขอ เมื่อแอปพลิเคชันของเราทำงานบน Node.js ผู้ใช้อาจจำเป็นต้องเรียกดูไปยังหน้าเว็บ URL http://localhost:3000/Employeeid.
เมื่อเปิดหน้าขึ้นมา รหัสพนักงานทั้งหมดในคอลเล็กชันพนักงานจะปรากฏขึ้น มาดูตัวอย่างโค้ดในแต่ละส่วนกัน ซึ่งจะช่วยให้เราบรรลุเป้าหมายดังกล่าวได้
ขั้นตอน 1) กำหนดไลบรารีทั้งหมดที่จำเป็นต้องใช้ในแอปพลิเคชันของเรา ซึ่งในกรณีของเราคือทั้ง MongoDB และห้องสมุดด่วน
Code คำอธิบาย:
- เรากำลังกำหนดไลบรารี 'ด่วน' ซึ่งจะใช้ในแอปพลิเคชันของเรา
- เรากำลังกำหนดของเรา 'MongoDB' ซึ่งจะใช้ในแอปพลิเคชันของเราเพื่อเชื่อมต่อกับไลบรารีของเรา MongoDB ฐานข้อมูล
- ที่นี่เรากำลังกำหนดนิยามของ URL เพื่อเชื่อมต่อกับฐานข้อมูลของเรา
- ในที่สุด เราจะกำหนดสตริงที่จะใช้ในการจัดเก็บคอลเลกชันของรหัสพนักงานที่จำเป็นต้องแสดงในเบราว์เซอร์ในภายหลัง
ขั้นตอน 2) ในขั้นตอนนี้ ตอนนี้เรากำลังจะได้รับเรกคอร์ดทั้งหมดในคอลเลกชัน 'พนักงาน' ของเรา และทำงานร่วมกับพวกเขาตามลำดับ
Code คำอธิบาย:
- เรากำลังสร้างเส้นทางไปยังแอปพลิเคชันของเราที่เรียกว่า 'Employeeid' ดังนั้นเมื่อใดก็ตามที่ใครก็ตามเรียกดู http://localhost:3000/Employeeid ของแอปพลิเคชันของเรา ข้อมูลโค้ดที่กำหนดไว้สำหรับเส้นทางนี้จะถูกดำเนินการ
- ที่นี่เราได้รับบันทึกทั้งหมดในคอลเลกชัน 'พนักงาน' ของเราผ่านคำสั่ง db.collection('Employee').find() จากนั้นเราจะกำหนดคอลเลกชันนี้ให้กับตัวแปรที่เรียกว่าเคอร์เซอร์ เมื่อใช้ตัวแปรเคอร์เซอร์นี้ เราจะสามารถเรียกดูบันทึกทั้งหมดของคอลเลกชันได้
- ขณะนี้เรากำลังใช้ฟังก์ชัน cursor.each() เพื่อนำทางไปยังบันทึกทั้งหมดในคอลเลกชันของเรา สำหรับแต่ละเรกคอร์ด เราจะกำหนดข้อมูลโค้ดว่าต้องทำอย่างไรเมื่อเข้าถึงแต่ละเรกคอร์ด
- ในที่สุด เราจะเห็นว่าหากข้อมูลที่ส่งกลับมาไม่ใช่ค่าว่าง เราจะเรียกพนักงานโดยใช้คำสั่ง “item.Employeeid” ส่วนที่เหลือของโค้ดคือการสร้างโค้ด HTML ที่เหมาะสมซึ่งจะช่วยให้แสดงผลลัพธ์ของเราได้อย่างถูกต้องในเบราว์เซอร์
ขั้นตอน 3) ในขั้นตอนนี้ เราจะส่งออกไปยังหน้าเว็บและทำให้แอปพลิเคชันของเรารับฟังพอร์ตใดพอร์ตหนึ่ง
Code คำอธิบาย:
- ที่นี่เรากำลังส่งเนื้อหาทั้งหมดที่สร้างขึ้นในขั้นตอนก่อนหน้าไปยังหน้าเว็บของเรา พารามิเตอร์ 'res' ช่วยให้เราสามารถส่งเนื้อหาไปยังหน้าเว็บของเราเพื่อเป็นการตอบกลับ
- เรากำลังทำให้แอปพลิเคชัน Node.js ทั้งหมดของเรารับฟังบนพอร์ต 3000
Output:
จากผลลัพธ์ที่ได้
- แสดงให้เห็นอย่างชัดเจนว่ารหัสพนักงานทั้งหมดในคอลเลกชันพนักงานถูกดึงข้อมูลแล้ว ทั้งนี้เป็นเพราะเราใช้ MongoDB ไดรเวอร์เพื่อเชื่อมต่อกับฐานข้อมูลและดึงข้อมูลบันทึกของพนักงานทั้งหมดแล้วใช้ "ด่วน" เพื่อแสดงบันทึก
นี่คือรหัสสำหรับการอ้างอิงของคุณ
var express = require('express'); var app = express(); var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; var str = ""; app.route('/Employeeid').get(function(req, res) { MongoClient.connect(url, function(err, db) { var cursor = db.collection('Employee').find(); //noinspection JSDeprecatedSymbols cursor.each(function(err, item) { if (item != null) { str = str + " Employee id " + item.Employeeid + "</br>"; } }); res.send(str); db.close(); }); }); var server = app.listen(3000, function() {});
หมายเหตุ cursor.each อาจเลิกใช้แล้วขึ้นอยู่กับเวอร์ชันของคุณ MongoDB คนขับ คุณสามารถต่อท้าย //noinspection JSDeprecatedSymbols ก่อน cursor.each เพื่อหลีกเลี่ยงปัญหานี้ หรือคุณสามารถใช้ forEach ด้านล่างนี้คือโค้ดตัวอย่างที่ใช้ forEach
var express = require('express'); var app = express(); var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; var str = ""; app.route('/Employeeid').get(function(req, res) { MongoClient.connect(url, function(err, db) { var collection = db.collection('Employee'); var cursor = collection.find({}); str = ""; cursor.forEach(function(item) { if (item != null) { str = str + " Employee id " + item.Employeeid + "</br>"; } }, function(err) { res.send(err); db.close(); } ); }); }); var server = app.listen(8080, function() {});











