ฉันควรใช้ ORM ใดสำหรับ Node.js และ MySQL [ปิด]


326

ฉันกำลังเขียนโครงการเพื่อใช้ Node.js ฉันต้องการใช้ MySQL เป็นฐานข้อมูลต่อไป (แม้ว่าฉันจะไม่สนใจเขียนสคีมาใหม่) ฉันกำลังมองหา ORM ประสิทธิภาพที่ใช้งานง่ายและสมเหตุสมผลซึ่งสนับสนุนการแคชความสัมพันธ์แบบหนึ่งต่อหนึ่งและหลายต่อหลายคน จาก ORMs MySQL ที่ฉันสามารถหาpersistencejsและsequelizeดูเหมือนส่วนใหญ่เป็นผู้ใหญ่ คุณมีประสบการณ์อย่างใดอย่างหนึ่งหรือไม่? ฉันควรทราบถึงข้อดีและข้อเสียที่เกี่ยวข้องในการตัดสินใจของฉันอย่างไร


แต่มันเป็นธีมที่น่าสนใจมาก คุณต้องการเข้าถึงผู้พัฒนาบุคคลที่สามเพื่อเปลี่ยนแปลงข้อมูลในเว็บไซต์ของคุณหรือไม่? อาจเป็นความคิดที่ดีกว่าหรือที่จะสร้างไลบรารี js ระดับกลางที่ส่งพารามิเตอร์คำขอ (ภาษาเมตา) ไปที่แบ็กเอนด์?
sergzach

2
@sergzach สนใจที่จะทำอย่างละเอียด? Google สำหรับ "การจำศีลแคช"
ponzao

หืมมม ... บางไซต์อนุญาตให้ผู้ใช้ หรือฉันไม่เข้าใจคุณโปรดขอโทษด้วย
sergzach

2
@sergzach: การแคชเป็นคุณสมบัติที่สำคัญพอสมควรของโซลูชัน ORM จำนวนมาก ลองดูที่ Cayenne
เนท CK

ลองโอรีโอ github.com/will123195/oreo
Will

คำตอบ:


101

ฉันขอแนะนำ Node ORM ได้ไหม

https://github.com/dresende/node-orm2

มีเอกสารเกี่ยวกับ Readme รองรับ MySQL, PostgreSQL และ SQLite

MongoDB สามารถใช้ได้ตั้งแต่รุ่น2.1.x (วางจำหน่ายในเดือนกรกฎาคม 2013)

ปรับปรุง: แพคเกจนี้ไม่ได้รับการบำรุงรักษาอีกต่อไปตาม README ของโครงการ มันแทนแนะนำชั้นวางหนังสือและsequelize


27
จากเอกสารดูเหมือนว่า Sequelize เป็นวิธีที่นำหน้าโครงการนี้
Tony O'Hagan

เป็นอีกตัวเลือกที่ยอดเยี่ยมสำหรับผู้ที่กำลังมองหา mysql ORM ไวยากรณ์ซับซ้อนกว่า แต่ก็ดีเช่นกัน
dresende

2
โครงการเปลี่ยน URL: github.com/dresende/node-orm2
Capy

ฉันได้รับข้อผิดพลาดนี้ "ข้อผิดพลาด: ไม่พบโมดูล" หมวก "" เมื่อฉันพยายามปรับใช้ .. ไม่ทราบว่าการติดตั้งหรือการติดตั้งซ้ำจำนวนมากจะช่วยอะไรได้บ้าง ข้อเสนอแนะใด ๆ ขอบคุณ
Gene Bo

1
Node-orm2 ไม่ได้รับการบำรุงรักษาอีกต่อไป มันเชื่อมโยงกับผลสืบเนื่องและ bookshelf.js
seebiscuit

150

ฉันเลือกSequelizeเพราะมันเป็นเอกสารที่ยอดเยี่ยม เป็นเพียงความเห็นที่ซื่อสัตย์ (ฉันไม่เคยใช้ MySQL กับโหนดมากขนาดนั้น)


10
ฉันต้องการจะชี้ให้เห็นว่า node-orm2 หรือ persistence.js ไม่ได้จัดเตรียมกลไกการย้ายข้อมูล persistence.js ไม่รองรับ postgres ผลที่ตามมาทำทั้งสองสิ่งเหล่านี้
airtonix

4
ฉันใช้ node-orm2 และเนื่องจากเอกสารที่ดีกว่าของ Sequelize ฉันสามารถทำให้มันใช้งานได้ง่ายขึ้นมาก
Michael J. Calkins

2
@Gelidus คุณได้รับข้อมูลนี้ที่ไหน
William Lepinski

14
น่าเศร้าที่เอกสาร Sequelize เพิ่งจะแย่มาก ฉันเริ่มใช้ Sequelize เมื่อเร็ว ๆ นี้และค่อนข้างพอใจกับเอกสาร ตอนนี้มันเป็นกองเชื่อมโยงที่เสียหายที่สร้างขึ้นโดยอัตโนมัติข้อมูลที่ล้าสมัยและตัวอย่างที่ไม่สมบูรณ์ ฉันจะยังคงยึดติดกับมันแม้ว่า มันไม่ยากที่จะเรียนรู้
แบรด

2
เพิ่งลบความคิดเห็นเก่าของฉันและตอนนี้ฉันเห็นด้วยกับ @Brad 100% แต่น่าเสียดายที่ :(
Andrey Popov

19

ก่อนอื่นโปรดทราบว่าฉันไม่ได้ใช้อย่างใดอย่างหนึ่ง (แต่ได้ใช้ Node.js)

ไลบรารีทั้งสองมีเอกสารค่อนข้างดีและมี API ที่เสถียร อย่างไรก็ตาม persistence.js ดูเหมือนว่าจะใช้ในโครงการอื่น ๆ อีกมากมาย ฉันไม่รู้ว่าพวกเขาทั้งหมดยังใช้อยู่หรือไม่

นักพัฒนาของ sequelize บางครั้งบล็อกเกี่ยวกับเรื่องที่blog.depold.com เมื่อคุณต้องการใช้คีย์หลักเป็นรหัสต่างประเทศคุณจะต้องใช้โปรแกรมแก้ไขที่อธิบายไว้ในโพสต์บล็อกนี้ หากคุณต้องการความช่วยเหลือสำหรับ persistence.js มีกลุ่ม google ที่อุทิศให้กับมัน

จากตัวอย่างที่ฉันรวบรวมว่า sequelize นั้นค่อนข้างเหมือน JavaScript (น้ำตาลมากขึ้น) มากกว่า persistance.js แต่มีการรองรับดาต้าสโตร์น้อยลง (เฉพาะ MySQL ในขณะที่ persistance.js ยังสามารถใช้ในร้านเบราว์เซอร์)

ฉันคิดว่าผลสืบเนื่องอาจเป็นหนทางที่จะไปหาคุณเนื่องจากคุณต้องการการสนับสนุน MySQL เท่านั้น อย่างไรก็ตามหากคุณต้องการคุณสมบัติที่สะดวกสบาย (เช่นการค้นหาตัวอย่าง) หรือต้องการใช้ฐานข้อมูลอื่นในภายหลังคุณจะต้องใช้ persistence.js


1
ดูเหมือนpersistencejs.orgขณะนี้ชี้ไปที่ไซต์ที่ไม่ต้องการบางแห่งเท่านั้นที่ GitHub ใช้งานได้
sansknwoledge

10

หนึ่งความแตกต่างที่สำคัญระหว่าง Sequelize และ Persistence.js คือว่าอดีตสนับสนุนประเภทข้อมูลคือSTRING ผมรู้สึกอึดอัดจริงๆทำทุกอย่างVARCHAR(255)TEXT


7
ปัจจุบัน Persistence.js สนับสนุน VARCHAR ด้วยเช่นกัน
alehro

8
ในฐานข้อมูลเช่น PostgreSQL, TEXT และ VARCHAR จะเหมือนกันทุกประการความแตกต่างเพียงอย่างเดียวคือถ้าคุณใส่จำนวนไบต์ (VARCHAR (255)) คุณจะมีค่าใช้จ่ายในการตรวจสอบขีด จำกัด ไม่มีปัญหาในการใช้ TEXT สำหรับทุกสิ่งใน PostgreSQL
เขียนใหม่

3
การใช้ TEXT ใน PostgreSQL นั้นเป็นวิธีปฏิบัติที่ดีกว่าแม้ว่าจะไม่ใช่การพกพาก็ตาม
cowbert
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.