jaqt - คิวรีและการแปลงข้อมูลสำหรับ JavaScript
(github.com/muze-nl)- เอนจินคิวรีสำหรับ Array และ Object ที่ได้แรงบันดาลใจจาก GraphQL และ SQL
- ไลบรารีที่นำความสามารถแบบ GraphQL ของ
Array.select()และArray.where()มาให้ใช้งานใน Javascript
from(data)
.where({
friends: 'John'
})
.select({
name: o => o.name+' '+o.lastName
})
4 ความคิดเห็น
พอเห็นโค้ดข้างบนแล้วก็นึกถึง Drizzle ORM ขึ้นมาเลย
ผมเพิ่งได้รู้จัก Drizzle ORM เมื่อไม่นานมานี้ มันเป็น ORM ที่มุ่งไปทาง query builder แบบเดียวกับ ORM ใน ecosystem ของ JS เดิมอย่าง knex หรือ typeorm ไหมครับ?
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 และประสิทธิภาพครับ!
นี่คือผลลัพธ์จากการถาม Perplexity