Building Rest Apis with Nodejs (ต่อ 3)

หลังจากที่ผ่าน(ต่อ2) มาแล้วนั้น ท้ายๆก่อนจะเปิดวาร์ป เราได้ลองทำการ insert Data ของเรา ไปยัง MongoDB กันแล้วนะครับ

แต่ก่อนอื่นที่จะทำต่อนั้น บางคนอาจจะสังเกตุเห็น ที่ music_controller.js นั้น มี code หน้าตาแปลกๆเข้ามา ซึ่งมีเลขด้วย หลายคนอาจจะเข้าใจ แต่หลายคนคงสงสัยว่า เจ้า เลข 200,500 มันคืออะไร และมันมีเลขอะไรบ้างง

มีอยู่ด้วยกัน 5 หมวดหมู่ดังนี้ครับ

1xx Informational
2xx Success
3xx Redirection
4xx Client Error
5xx Server Error

ซึ่งถ้าอยากอ่านเพิ่มเติม คลิกที่นี่เลย

กลับมาของเรากันต่อ กลัวมันจะยาววเกิ๊นนน หลายต่อแล้ววว

ความเดิมตอนที่แล้วนั้น เราได้ ทำในส่วนของการ insert Data ของเรา ไปยัง MongoDB

เพราะฉะนั้นในส่วนของ file music_controller.js ยังเหลืออีก หนึ่งส่วนที่เรายังไม่ได้จัดการให้มันเรียบร้อย มันคือ findAll() นั่นเอง

ฉะนั้นเรามาจัดการมันต่อดีกว่าครับ โดยมีสิ่งที่ต้องเพิ่มดังนี้ครับ Misic.find() เป็นการเรียกใช้ method ของObject

ผมว่า คงมีหลายคนสงสัยว่า ผมรู้ได้ยังไงว่ามันมี .save
.find ซึ่งจริงๆแล้วเราสามารถ พิม object ตามด้วย .(dot) แล้วก็จะขึ้นดังภาพครับ เลือกมาสักอันหนึ่ง จากนั้นจะคลิกเข้าไปดูก็ได้ครับ

ซึ่งถ้าเราคลิกเข้าไปนั้น ข้างในก็จะมีคำ อธิบายอยู่มากมายครับ

สงสัยต่อ …อ้าวแล้วทำไมมันถึงมีให้เราใช้แบบนี้หละ code บรรทัดเดียวเองง

งั้นเรามาลองย้อนนนกลับไปดู ต้นต่อกันดีกว่าครับ ว่าทำไม ซึ่งต้นตอมันก็อยู่ที่ file music-model.js

สาเหตุที่เราสามารถ เรียกใช้ object.(dot) ต่างๆนาๆได้เป็นเพราะว่า เราได้สร้างเป็นโมเดลที่เป็นObjectไว้ครับ ทีนี่้ผมจะลองยกตัวอย่างเพิ่มโดยที่ผมสร้าง A model เพิ่มขึ้นมาอีกตัวหนึ่ง ซึ่งทั้งสองตัวนี้อยู่ภายใต้ DataBase Demo_DB ซึ่งมันจะมองเป็นคนละอันกันอย่างสิ้นเชิงครับ อารมณ์จะประมาณว่า ใน Demo_DB มี object 2 ตัว ชื่่อว่า mucis และ a

ซึ่งทั้งสองตัวนั้นจะมีฟังก์ชั่นการทำงานหลักๆที่เหมือนกัน เช่น Music.find และ A.find แต่ค่าที่ได้กลับมานั้นจะเป็นของใครของมัน

คราวนี้ผมจะลองเพิ่ม A model และตัวอย่าง .find ของแต่ละ object แต่จะไม่ได้เอา code การเพิ่มมาแปะไว้ให้ เพราะอยากให้มองภาพออกเฉยๆครับ
ขั้นตอนในการเพิ่ม A model คราวนี้ผมจะไม่อธิิบายนะครับ เป็นเพราะอยากให้ลองดูแล้ว ลองคิดแบบเล่นๆว่า ถ้าเราจะเพิ่ม model ใหม่ มันต้องทำอะไร ตรงไหนบ้าง ^^
ปล. ซึ่งจริงๆแล้วผมอยากให้ทุกคนลอง เพิ่ม Model เล่นกันดูครับ น่าจะทำให้เข้าใจกันมากขึ้น
จากนั้นผมก็ลอง เพิ่มค่าให้ a model

และ Get A model ดูบ้างครับ

ซึ่งจะเห็นได้ว่าค่าที่มัน Return มานั้นมีแค่ของ A model ครับ

ตอนเขียนๆอยู่ก็มีความรู้สึกผิด ><’ คือ รู้สึกว่า ผมเขียนอะไรยาวไปไหม เขียนยาวๆมาเนี๊ยมันได้สาระมั้งหรือป่าววว แล้ววว มันทำให้คนอื่น เข้าใจบ้างไหม T^T ถ้าใครเผลอเข้ามาอ่านถึงจุดนี้ แล้ว..ใจดี ช่วยตอบกลับมาบ้างนะครับ ผมจะได้มีข้อมูล ไว้ปรับปรุงการเขียน หรือมีข้อเสนออะไรบอกกันได้นะครับ -/\- ขอบพระคุณครับ

หลังจาก ที่เราสามารถเพิ่มและเรียกค่าทั้งหมดใน MongoDB มาได้แล้ว คราวนี้เราลองมา ค้นหา แบบเฉพาะเจาะจงกันครับ และก็มาลองdeleteดู

ซึ่งเราจะเล่นกันที่ตัว music คิดออกไหมครับว่า เราต้องไปเริ่มที่ file ไหน …………เราต้องมาเริ่มกันที่ misic_routes.js ครับผมม เพราะว่าที่ผ่านมา เราจะทำการ insert หรือ view data มันถูกกำหนดที่นี่ครับ ซึ่งมันก็จะเกี่ยวข้องกับ เจ้า ‘/’ , method Type และก็ controlles

นอกเรื่องนิสหนึ่ง Method Type ที่เราสามารถใช้งานได้ครับผม
งั้นมาลองเพิ่มกันเลยดีกว่าา

โดยได้ทำการเพิ่ม code บรรทัดที่ 8 และ 9 และถ้าสั่งเกตุดูจะพบว่า บรรทัดที่ 8 นั้น ใช้ Method.get ซึ่งเหมือนกับ บรรทัดที่ 5 แต่จะมีความแตกต่างกัน ตรงที่ บรรทัดที่8 นั้น เราได้มีการกำหนดค่าให้รับ parameter และในส่วนบรรทัดที่ 9 นั้นใช้ Method.delete

จากนั้นไปที่ไหนต่อครับ ผมว่าถึงจุดนี้หลายคนคง เข้าใจแล้วว่า อันต่อไปเราจะต้องไปที่ไหน ^^

music_controller.js ครับ มาแล้วก็สร้าง method findById และ deleteById ตรงนี้ทุกคนคงเข้าใจแล้วนะครับว่าทำไม มีความสัมพันธ์กับ misic_routes.js อย่างไรจากนั้นผมก็กำหนดตัวแปรเพื่อมารับค่าจาก parameter ชื่อว่า Id

ซึ่งจะเป็นการรับค่ามาจาก ตรงนี้ครับ

ลองมาทดสอบดูกันครับ โดยการเพิ่มconsole.log(Id);

จากนั้นก็ลองทดสอบกันดูว่าผมจะออกมาเป็นอย่างไร ง่ายสุดในการทดสอบนี้ ก็คือ ลองบน web browser นี่แหละครับ http://localhost:3000/api/music/1

จากนั้นเราก็กลับมาดูใน Terminal เราว่า มีค่าอะไรโผล่มาบ้าง

เป็นอันว่าใช้ได้ครับ

คราวนี้มาลองหาค่า DataBase ของเรากันครับ โดยผมจะใช้ Key ในการค้นหาคือ Id ครับ เมื่อกี้เราลอง เช็คค่าแล้วว่า ถ้าเรา request ไปที่ URL localhost:3000/api/music/91 สิ่งที่อยู่หลัง / นั้นจะคือค่า Id ครับ ซึ่งเราจะนำมันไปใช้ในการ query ซึ่งจะต้องเพิ่ม code ดังนี้ครับ

ถ้าเรา request ไปที่ URL localhost:3000/api/music จะเป็นการ เรียกดูข้อมูลทั้งหมด

ทีนี้เราลอง request ไปที่ URL localhost:3000/api/music โดยกำหนด ค่า Id ดูครับ localhost:3000/api/music/99

มาต่ออีกหน่อยนะครับ จากเมื่อกี้่เราค้น หาโดย Id ได้แล้ว คราวนี้เรามาลอง Remove โดยใช้ Id กันครับ ซึ่งไม่ยากครับ เราแค่เปลี่ยน จาก Music.find เป็น Music.remove ซึ่งจะได้ code หน้าตาดังนี้ครับ

จากนั้นก่อนลบเช็คก่อนว่ามีข้อมูลอยู่ หรือ ป่าว

จากนั้นจัดการลบมันเลยครับผม อย่าลืมเปลี่ยน Method เป็น DELETE ด้วยนะครับ

จากนั้นเช็คอีกที่

อ้าว บ้ายบายยย ^ ^

Like what you read? Give Arthit Aunkeaw a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.