[NodeJS] เช็คพารามิเตอร์ของ Express ด้วย express-validator

ในบทความนี้ผมก็จะมาสอนการเช็คค่าพารามิเตอร์ของคนที่ใช้ Express ซึ่งเป็นตัว Framework สำหรับทำ web framework ของ Node.js วิธีนั่นง่ายมากครับเราจะใช้ไลบรารีที่ชื่อ express-validator ในการเช็คค่าแล้วส่ง error กลับไปยังหน้าเว็บ

ติดตั่ง validator

npm install express-validator –save

 

Setup ตัวไลบรารี

ซึ่งผมเอาแค่โค้ดบางส่วนมาโดยสมุติว่า ผมได้ทำการเขียนโค้ดใน app.js หรือ server.js ไว้ประมาณนี้ หลังจากที่ติดตั่งแล้วเราก็เรียกใช้งานตามด้านล่างเลยครับ

ข้อควรจำ การเรียกใช้ตัว validate ต้องเรียกหลัง bodyParser เท่านั่นนะครับ

 

วิธีการใช้งาน

Screenshot from 2016-05-10 09-48-16

สุมติว่าผมเขียนโค้ดไว้ใน Controller ไว้ประมาณนี้ ยกมาแค่บางส่วน  ซึ่งการเรียกใช้งานง่ายมากคือเรียก req.checkBoy() ได้เลยแล้วตามด้วยว่าจะเช็คอะไร แบบตัวอย่างเช็ค .isEmail() .notEmpty() แบบนี้เป็นต้น

 

ตัวอย่างการใช้งาน

ก่อนอื่นก็ไปสร้าง route ให้กับฝั่ง express ก่อน

app.route(‘/api/example/validate/’).post(admin.showdata);

ลองเรียกจาก postman ดู

Screenshot from 2016-05-10 09-42-57

เราก็จะเห็นว่าระบบโยน error ออกมาให้เราว่าเราไม่ได้ใส่พารามิเตอร์ลงไป

Screenshot from 2016-05-10 09-51-49

ทดสอบการเช็ค email ผลที่ได้คือใส่ผิดมันก็แจ้งมาแบบนี้

Screenshot from 2016-05-10 09-52-04

ที่นี่ใส่แบบถูกต้องและผลที่ได้ระบบส่งค่ากลับมาให้แล้วครับ

 

มีปัญหาไหมถ้าไม่ทำ async

จากที่ผมใช้งานอยู่ไม่มีปัญหากับการทำงานแบบ non-blocking-io ของ JavaScript ครับ เราสามารทำงานแบบ line by line ได้ ซึ่งผมแนะนำว่าถ้าจะทำ async ให้ไปทำตอน query ข้อมูลครับ ไม่ควรทำตอนที่เช็คข้อมูลไม่งั่นมันทำให้ระบบเราทำงานหนักเพียงเพราะเราต้องการใช้ เช็คข้อมูล แถมโค้ดกลายเป็น spaghetti code เพราะ syntax ของ async เขียนเยอะๆ มันจะ งง มากครับ ตามตัวอย่างนี้เลยเข้าอธิบายได้ดีมาก link ซึ่งปกติที่มักใช้ก็จะมี  Async.js  และ express-async ครับ

 

จะรู้ได้ไงว่ามีฟังก์ชันอะไรให้ใช้เช็คค่าได้มัง

ตัว express-validator มันมี dependency ที่ทำงานร่วมกับ validator.js เพราะงั่น validator.js มีฟังก์ชั่นอะไร express-validator ก็สามารถทำงานได้ตามนั่นครับ เข้าไปเช็คกันดูได้ครับ

 

เราสามารทำ custom ได้นะ

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

 

เราสามารถเช็ค request ได้หลายแบบด้วย ได้ทั้ง get, post, header

Screenshot from 2016-05-10 10-16-15

ที่เหลือผมก็ไม่บอกแล้วลองเข้าไปอ่านที่ doc  ได้เลย บทความนี้ผมบอกเฉพาะพื้นฐานที่จำเป็นครับ จะเล่นท่ายากต้องไปต่อยอดเองนะครับ บทความนี้ก็จบเท่านี้นะครับ

 

Facebook Comments