6 คะแนน โดย xguru 2024-11-07 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • เอนจินคิวรีสำหรับ Array และ Object ที่ได้แรงบันดาลใจจาก GraphQL และ SQL
  • ไลบรารีที่นำความสามารถแบบ GraphQL ของ Array.select() และ Array.where() มาให้ใช้งานใน Javascript
from(data)  
.where({  
	friends: 'John'  
})  
.select({  
	name: o => o.name+' '+o.lastName  
})  

4 ความคิดเห็น

 
brain1401 2024-11-07

พอเห็นโค้ดข้างบนแล้วก็นึกถึง Drizzle ORM ขึ้นมาเลย

 
wogns3623 2024-11-08

ผมเพิ่งได้รู้จัก Drizzle ORM เมื่อไม่นานมานี้ มันเป็น ORM ที่มุ่งไปทาง query builder แบบเดียวกับ ORM ใน ecosystem ของ JS เดิมอย่าง knex หรือ typeorm ไหมครับ?

 
brain1401 2024-11-09

Drizzle มีแนวทางที่ค่อนข้างต่างจาก ORM แบบเดิม ๆ อยู่พอสมควร มองว่าเป็น "ชั้น SQL แบบบาง" ที่ออกแบบมาให้เหมาะกับ TypeScript ก็น่าจะใกล้เคียงครับ

ถ้าเทียบกับ Knex ไวยากรณ์และวิธีนิยามสคีมาอาจดูคล้ายกัน แต่มีความต่างอย่างมากในแง่การรองรับ TypeScript โดย Drizzle ให้ความสำคัญกับ type safety มากกว่า ขณะที่ Knex ต้องแยกนิยามสคีมากับประเภทข้อมูลออกจากกัน แต่ Drizzle สามารถสร้างทั้งสคีมาและประเภทข้อมูลได้จากการนิยามเพียงครั้งเดียว จึงสะดวกกว่าและเกิดข้อผิดพลาดน้อยกว่า

ถ้าเทียบกับ TypeORM, TypeORM จะหนักกว่าและใกล้เคียงกับ ORM แบบดั้งเดิมมากกว่า Drizzle เบากว่าและมีประสิทธิภาพดีกว่า จึงมีข้อได้เปรียบโดยเฉพาะในสภาพแวดล้อมแบบ serverless จาก benchmark จริง Drizzle ว่ากันว่าเร็วกว่าทั้ง TypeORM และ Prisma หลายเท่า

อีกจุดที่น่าสนใจคือ Drizzle รองรับการจัดการ migration ได้ดีเช่นกัน โดยสามารถใช้เครื่องมือ CLI อย่าง Drizzle Kit เพื่อสร้างไฟล์ migration อัตโนมัติได้ และในขั้นตอนพัฒนาก็สามารถใช้คำสั่ง push เพื่อปรับใช้การเปลี่ยนแปลงสคีมาได้อย่างง่ายดาย

สรุปแล้ว Drizzle ถือเป็น query builder สมัยใหม่ที่เป็นมิตรกับ TypeScript พร้อมทั้งเบาและมีประสิทธิภาพสูง โดยเฉพาะอย่างยิ่งเหมาะกับคนที่ให้ความสำคัญกับ type safety และประสิทธิภาพครับ!

 
brain1401 2024-11-09

นี่คือผลลัพธ์จากการถาม Perplexity