ORM mana yang harus saya gunakan untuk Node.js dan MySQL? [Tutup]

326

Saya menulis ulang proyek untuk menggunakan Node.js. Saya ingin tetap menggunakan MySQL sebagai DB (walaupun saya tidak keberatan menulis ulang skema). Saya mencari ORM yang mudah digunakan dan berkinerja tinggi, yang mendukung caching, banyak-ke-satu dan banyak-ke-banyak hubungan. Dari ORM MySQL yang bisa saya temukan, kegigihan dan sekuel tampaknya yang paling matang. Apakah Anda memiliki pengalaman dengan keduanya? Apa pro dan kontra yang relevan yang harus saya perhatikan dalam keputusan saya?

Dekat Privman
sumber
Tapi itu tema yang sangat menarik. Apakah Anda ingin mendapatkan akses ke pengembang pihak ketiga untuk mengubah data di situs Anda? Mungkin lebih baik membuat perpustakaan js menengah yang mengirimkan parameter permintaan (bahasa meta) ke backend?
sergzach
2
@sergzach Peduli untuk menguraikan? Google untuk "hibernate caching".
ponzao
Hm ... Beberapa situs mengizinkan aplikasi pengguna. Atau saya tidak mengerti Anda, maafkan saya.
sergzach
2
@ergergach: Caching sebenarnya adalah fitur yang cukup besar dari sejumlah solusi ORM. Lihatlah Cayenne, misalnya.
Nate CK

Jawaban:

101

Bolehkah saya menyarankan Node ORM?

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

Ada dokumentasi pada Readme, mendukung MySQL, PostgreSQL dan SQLite.

MongoDB tersedia sejak versi 2.1.x (dirilis pada Juli 2013)

UPDATE: Paket ini tidak lagi dipertahankan, sesuai README proyek. Alih-alih merekomendasikan rak buku dan sekuel

dresende
sumber
27
Berdasarkan dokumen sepertinya Sequelize jauh di depan proyek ini.
Tony O'Hagan
Ini pilihan bagus lainnya untuk orang yang mencari mysql ORM. Sintaksnya lebih kompleks, tapi bagus juga.
dresende
2
proyek telah mengubah URL: github.com/dresende/node-orm2
Capy
Saya mendapatkan kesalahan ini "Kesalahan: Tidak dapat menemukan modul 'topi'" ketika saya mencoba untuk menyebarkan ini. .. tidak ada jumlah npm menginstal atau menginstal ulang tampaknya membantu. Ada saran? Terima kasih
Gene Bo
1
Node-orm2 tidak lagi dipelihara secara aktif. Tautan ke sekuel dan bookshelf.js.
seebiscuit
150

Saya akan memilih Sequelize karena itu dokumentasi yang sangat baik. Itu hanya pendapat yang jujur ​​(saya tidak pernah menggunakan MySQL dengan Node sebanyak itu).

alessioalex
sumber
10
Saya juga ingin menunjukkan bahwa node-orm2 atau persistence.js tidak menyediakan mekanisme migrasi. persistence.js tidak mendukung postgres. sekuel melakukan kedua hal ini.
airtonix
4
Saya menggunakan node-orm2 dan karena dokumentasi Sequelize yang lebih baik, saya dapat membuatnya dan menjalankannya lebih mudah
Michael J. Calkins
2
@Gididus Dari mana Anda mendapatkan informasi ini?
William Lepinski
14
Sayangnya, dokumentasi Sequelize baru-baru ini menjadi mengerikan. Saya mulai menggunakan Sequelize baru-baru ini dan cukup senang dengan dokumen tersebut. Sekarang ini adalah tumpukan tautan rusak, informasi usang, dan contoh tidak lengkap yang dihasilkan secara otomatis. Saya masih akan tetap dengan itu. Tidak sulit untuk belajar.
Brad
2
Baru saja menghapus komentar lama saya dan saya sekarang 100% setuju dengan @Brad, sayangnya :(
Andrey Popov
19

Pertama, harap perhatikan bahwa saya belum pernah menggunakan keduanya (tetapi telah menggunakan Node.js).

Kedua perpustakaan didokumentasikan dengan cukup baik dan memiliki API yang stabil. Namun, persistence.js tampaknya digunakan dalam lebih banyak proyek . Saya tidak tahu apakah mereka semua masih menggunakannya.

Pengembang sekuel kadang-kadang blog tentang hal itu di blog.depold.com . Saat Anda ingin menggunakan kunci utama sebagai kunci asing, Anda memerlukan tambalan yang dijelaskan dalam posting blog ini . Jika Anda ingin bantuan untuk persistence.js ada grup google yang dikhususkan untuk itu.

Dari contoh yang saya kumpulkan bahwa sekuel lebih seperti JavaScript (lebih banyak gula) daripada persistance.js tetapi memiliki dukungan untuk lebih sedikit datastore (hanya MySQL, sementara persistance.js bahkan dapat menggunakan toko di dalam browser).

Saya pikir sekuel yang mungkin menjadi cara untuk Anda, karena Anda hanya perlu dukungan MySQL. Namun, jika Anda memerlukan beberapa fitur yang mudah digunakan (misalnya pencarian) atau ingin menggunakan database yang berbeda di lain waktu, Anda harus menggunakan persistence.js.

hey_lu
sumber
1
sepertinya persistencejs.org sekarang menunjuk ke beberapa situs yang tidak diinginkan, hanya GitHub yang berfungsi
sansknwoledge
10

Satu perbedaan utama antara Sequelize dan Persistence.js adalah bahwa yang pertama mendukung STRINGtipe data, yaitu VARCHAR(255). Saya merasa sangat tidak nyaman membuat semuanya TEXT.

Josh Smith
sumber
7
Saat ini Persistence.js mendukung VARCHAR juga.
alehro
8
Dalam database seperti PostgreSQL, TEXT dan VARCHAR persis sama, satu-satunya perbedaan adalah jika Anda meletakkan batas byte (VARCHAR (255)) maka Anda memiliki overhead untuk memeriksa batas. Sama sekali tidak ada masalah dalam menggunakan TEXT untuk semua yang ada di PostgreSQL.
ditulis ulang
3
Menggunakan TEXT di PostgreSQL sebenarnya adalah praktik yang lebih baik, bahkan jika itu tidak portabel.
cowbert