Node.js ve MySQL için hangi ORM'yi kullanmalıyım? [kapalı]


326

Node.js kullanmak için bir projeyi yeniden yazıyorum. (Şemayı yeniden yazmayı düşünmeme rağmen) DB olarak MySQL kullanmaya devam etmek istiyorum. Önbelleğe almayı, çoktan bire ve çoktan çoğa ilişkilerini destekleyen kullanımı kolay, makul performanslı bir ORM arıyorum. Bulabildiğim MySQL ORM'lerinden , persistencejs ve devam filmi en olgun görünüyor. İkisiyle de deneyiminiz var mı? Kararımda bilmem gereken ilgili artıları ve eksileri nelerdir?


Ama bu çok ilginç bir tema. Sitenizdeki verileri değiştirmek için üçüncü taraf geliştiricilere erişmek ister misiniz? Bir arka uca istek parametreleri (meta dili) gönderen ara js kütüphanesi oluşturmak daha iyi bir fikir olabilir mi?
sergzach

2
@sergzach Ayrıntılara dikkat etmek ister misiniz? "Hazırda bekletme önbelleği" için Google.
ponzao

Hm ... Bazı siteler kullanıcı uygulamalarına izin verir. Yoksa seni anlamadım, afedersiniz lütfen.
sergzach

2
@sergzach: Önbellekleme aslında bir dizi ORM çözümünün oldukça önemli bir özelliğidir. Örneğin Cayenne'ye bak.
Nate CK

Yanıtlar:


101

Düğüm ORM'sini önerebilir miyim?

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

Benioku ile ilgili belgeler var, MySQL, PostgreSQL ve SQLite desteği var.

MongoDB, 2.1.x sürümünden beri kullanılabilir (Temmuz 2013'te piyasaya sürüldü)

GÜNCELLEME: Bu paket, projenin README'sine göre artık korunmamaktadır. Bunun yerine kitaplık ve devam filmi önerir


27
Belgelere dayanarak Sequelize bu projenin çok önünde gibi görünüyor.
Tony O'Hagan

MySQL ORM arayan insanlar için harika bir seçenek. Sözdizimi daha karmaşık, ama güzel.
dresende

2
proje URL'yi değiştirdi: github.com/dresende/node-orm2
Capy

Bu hatayı alıyorum "Hata: 'hat' modülü bulunamadı" Bunu dağıtmaya çalıştığımda. .. hiçbir npm yükleme veya yeniden yükleme yardımcı gibi görünmüyor. Herhangi bir öneri? Teşekkürler
Gene Bo

1
Düğüm-orm2 artık aktif olarak tutulmamaktadır. Sekanslama ve bookshelf.js ile bağlantılıdır.
seebiscuit

150

Ben seçsin Sequelize mükemmel dokümantasyon var yüzünden. Sadece dürüst bir görüş (MySQL'i gerçekten Node ile bu kadar kullanmadım).


10
Ayrıca node-orm2 veya persistence.js'nin bir geçiş mekanizması sağlamadığını belirtmek isterim. persistence.js postgres'ı desteklemez. sequelize her iki şeyi de yapar.
airtonix

4
Ben düğüm-orm2 kullanılan ve Sequelize en iyi dokümantasyon nedeniyle ben ve çok daha kolay çalışmasını elde edebildi
Michael J. Calkins

2
@Gelidus Bu bilgiyi nereden aldınız?
William Lepinski

14
Ne yazık ki, Sequelize belgeleri son zamanlarda korkunç hale geldi. Son zamanlarda Sequelize kullanmaya başladım ve dokümanlar beni oldukça memnun etti. Artık otomatik olarak oluşturulmuş kırık bağlantılar, eski bilgiler ve eksik örnekler yığını. Yine de buna devam edeceğim. Öğrenmek o kadar zor değil.
Brad

2
Eski yorumumu yeni sildim ve şimdi% 100 @Brad'a katılıyorum, maalesef :(
Andrey Popov

19

Öncelikle, ikisinden birini kullanmadığımı (ancak Node.js'yi kullandığımı) lütfen unutmayın.

Her iki kütüphane de oldukça iyi belgelenmiştir ve kararlı bir API'ya sahiptir. Ancak persistence.js daha fazla projede kullanılıyor gibi görünüyor . Yine de hepsinin hala kullanıp kullanmadığını bilmiyorum.

Devam filminin geliştiricisi bazen blog.depold.com adresinde bu konuda bloglar oluşturur . Birincil anahtarları yabancı anahtar olarak kullanmak istediğinizde, bu blog gönderisinde açıklanan yamaya ihtiyacınız olacaktır . Persistence.js için yardım istiyorsanız, ona ayrılmış bir google grubu var.

Topladığım örneklerden, bu sıralamanın persistance.js'den biraz daha fazla JavaScript benzeri (daha fazla şeker) olduğunu, ancak daha az veri deposunu desteklediğini (yalnızca MySQL, persistance.js tarayıcı içi mağazalar bile kullanabilir).

Sadece MySQL desteğine ihtiyacınız olduğu için devam filminin sizin için bir yol olabileceğini düşünüyorum. Ancak, bazı kullanışlı özelliklere (örneğin arama) ihtiyacınız varsa veya daha sonra farklı bir veritabanı kullanmak isterseniz persistence.js'yi kullanmanız gerekir.


1
persistencejs.org gibi bazı istenmeyen sitelere işaret ediyor gibi görünüyor , sadece GitHub çalışıyor
sansknwoledge

10

Sequelize ve Persistence.js arasındaki en büyük fark, birincisinin bir STRINGveri türünü desteklemesi , yani VARCHAR(255). Her şeyi yapmaktan gerçekten rahatsız oldum TEXT.


7
Şu anda Persistence.js de VARCHAR'ı desteklemektedir.
alehro

8
PostgreSQL, TEXT ve VARCHAR gibi veritabanlarında aynı olan tek fark, bir bayt limiti (VARCHAR (255)) koyarsanız, limiti kontrol etmek için bir ek yükünüz olmasıdır. PostgreSQL'deki her şey için TEXT kullanımında kesinlikle bir sorun yoktur.
yeniden yazıldı

3
PostgreSQL'de TEXT kullanmak taşınabilir olmasa bile aslında daha iyi bir uygulamadır.
cowbert
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.