Skip to main content
0
DatabaseLibrary / FrameworkNode.js

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

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

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

เรามาเริ่มกันที่ 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 ใช่รูปแบบต่างๆ และการใช้งานพื้นฐานกัน สำหรับวันนี้ขอลาไปก่อนสวัสดีครับ

อ่าน Document Sequelize

thapanon

Author thapanon

More posts by thapanon

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

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

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

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

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

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

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

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