Skip to main content
DatabaseLibrary / FrameworkNode.js

5 function ที่ได้ใช้แน่ๆ กับ Sequelize 102

สวัสดีครับเพื่อน ๆ จากรอบที่แล้วผมได้มาเล่าเกี่ยวกับเรื่อง การสร้าง model การ connect และการ CRUD เบื่องต้นของ sequelize ไปแล้ว

วันนี้เรามาดู Function ที่คิดว่าทุกๆคนจะได้ใช้แน่นอนกันนะครับ ส่วนใครที่เข้ามาอ่านครั้งแรกก็สามารถกลับไปอ่าน 101 ได้ ที่นี่ เลย

ผู้เขียน Thapanon S.   กีกี้หมายเลข1 – BorntoDev Co., Ltd.

เรามาเริ่มกันที่ function ที่ได้ใช้แน่ๆ นั้นมีอะไรบ้าง นั้นก็คือ MAX MIN AVG SUM และ COUNT นั่นเอง ซึ่งใน sequelize เราสามารถใช้ function เหล่านี้ได้ง่าย ๆ ด้วยตัวย่าง code ด้านล่างเลย โดยเราจะใช้ข้อมูลใน database ที่เราสร้างเมื่อคราวที่แล้วนะครับ

เรามาเริ่มกันที่ max min และ sum กันก่อน เพราะวิธีใช้คล้าย ๆ กัน

await player.max('age'); <= โดย code นี้จะไปหาค่าที่มากที่สุดของ column age ในตาราง player
await player.min('age'); <= โดย code นี้จะไปหาค่าที่น้อยที่สุดของ column age ในตาราง player
await player.sum('age');  <= โดย code นี้จะไปหาผลรวมของ column age ในตาราง player

code ด้านบนเป็นการหาค่าที่ max min หรือ sum อย่างเดียวแต่ถ้าเราอยากได้ข้อมูลอื่นๆ ด้วยเราก็ใช้วิธี order แบบด้านล่างนะครับ

await player.findOne({ order: [['age', 'DESC']] }); <= code ใช้หาค่า max โดยใช้ column age
await player.findOne({ order: [['age']] }); <= code ใช้หาค่า min โดยใช้ column age

 

ต่อไปเรามาดู count กันบ้าง ซึ่งทาง sequelize มีรูปแบบที่ต่างออกไปตาม code ด้านล่างครับ

await player.count(); 

 

code ด้านบนนี้เป็นการหาค่าจำนวน row ใน player table แต่ถ้าอยากได้แบบที่ตรงเงื่อนไขเราก็ใช้ where เข้าไปแบบนี้ครับ

await player.count({
where: {
      age: { [Op.gt] : 25 }
    }
}); 

 

Code นี้คือการที่เราหาจำนวนผู้เล่นที่มีอายุมากกว่า 25 ( Op คือ Operators ของ sequelize ที่เราต้องเรียกมาจาก db.Sequelize ก่อนถึงจะใช้ได้ เพราะงั้นอย่าลืม เรียกก่อนใช้กันนะครับ แล้วถ้าใครอยากรู้ว่า Operators ของ sequelize มีอะไรบ้างไปตามอ่านกันได้ ที่นี่ เลย)
แล้วถ้าเราต้องการการข้อมูลด้วยให้เราใช้ findAndCountAll แทน count นะครับ แบบนี้

await player.findAndCountAll({
where: {
      age: { [Op.gt] : 25 }
});

เราได้ดูการใช้ max min และ count ที่รูปแบบต่าง ๆ ไปแล้ว แล้วถ้าเราต้องการใช้มันกับ findAll และ fineOne ล่ะเราจะใช่ได้ตามรูปแบบ code ด้านล่างเลยยยย!!

await player.findAll({
    attributes: [ [sequelize.fn('avg', sequelize.col('age')), 'average'] , [sequelize.fn('sum', sequelize.col('age')), 'sum'] ],
  });

 

Code นี้เป็นการหาอายุ avg กับ sum ของ player ออกมา รอบเดียวกัน โดย max min count ก็สามารถใช่รูปแบบเดียวกันได้

แต่ถ้าใครยังมันสามารถเขียนในรูปแบบของ SQL ได้ออกมาแบบนี้ครับ

SELECT AVG(age) As average , SUM(age) As sum
FROM player

 

อ่าวละก็จบลงไปแล้วกับการใช่ 5 function ที่มีโอกาสได้ใช้แน่นอนของ sequelize ในรูปแบบต่างๆ
หวังว่าเพื่อนๆคงได้ความรู้ไปไม่มากก็น้อยหากผมเข้าใจอะไรผิดก็ฝากเพื่อนๆ ช่วยติชมกันได้นะครับ โดยครั้งหน้าเราจะมาพูดกันถึงเรื่องของ Associations ใช่รูปแบบต่างๆ และการใช้งานพื้นฐานกัน สำหรับวันนี้ขอลาไปก่อนสวัสดีครับ

หากคุณสนใจพัฒนา สตาร์ทอัพ แอปพลิเคชัน
และ เทคโนโลยีของตัวเอง ?

อย่ารอช้า ! เรียนรู้ทักษะด้านดิจิทัลเพื่ออัพเกรดความสามารถของคุณ
เริ่มตั้งแต่พื้นฐาน พร้อมปฏิบัติจริงในรูปแบบหลักสูตรออนไลน์วันนี้

kanthima.m

Author kanthima.m

More posts by kanthima.m

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

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า