Quale ORM dovrei usare per Node.js e MySQL? [chiuso]


326

Sto riscrivendo un progetto per usare Node.js. Mi piacerebbe continuare a usare MySQL come DB (anche se non mi dispiace riscrivere lo schema). Sto cercando un ORM semplice da usare e dalle prestazioni ragionevoli, che supporti la memorizzazione nella cache, le relazioni molti-a-uno e molti-a-molti. Dagli ORM di MySQL che ho trovato, persistencejs e sequelize sembrano i più maturi. Hai esperienza con entrambi? Quali sono i pro e i contro di cui dovrei essere consapevole nella mia decisione?


Ma è un tema molto interessante. Desideri avere accesso agli sviluppatori di terze parti per modificare i dati sul tuo sito? Potrebbe essere una buona idea creare una libreria js intermedia che invia parametri di richiesta (meta linguaggio) a un back-end?
sergzach,

2
@sergzach Cura da elaborare? Google per "ibernazione nella cache".
ponzao,

Hm ... Alcuni siti consentono applicazioni utente. O non ti ho capito, mi scusi per favore.
sergzach,

2
@sergzach: la memorizzazione nella cache è in realtà una caratteristica abbastanza importante di numerose soluzioni ORM. Guarda Cayenne, per esempio.
Nate CK,

Risposte:


101

Posso suggerire Node ORM?

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

C'è documentazione sul file Leggimi, supporta MySQL, PostgreSQL e SQLite.

MongoDB è disponibile dalla versione 2.1.x (rilasciata a luglio 2013)

AGGIORNAMENTO: Questo pacchetto non è più gestito, secondo il README del progetto. Raccomanda invece lo scaffale e il sequelize


27
Sulla base dei documenti sembra che Sequelize sia molto più avanti di questo progetto.
Tony O'Hagan,

È un'altra grande opzione per le persone che cercano mysql ORM. La sintassi è più complessa, ma anche piacevole.
dresende,

2
il progetto ha cambiato l'URL: github.com/dresende/node-orm2
Capy

Ottengo questo errore "Errore: Impossibile trovare il modulo 'hat'" quando provo a distribuire questo. .. nessuna quantità di npm installa o reinstalla sembra aiutare. Eventuali suggerimenti? Grazie
Gene Bo,

1
Node-orm2 non viene più mantenuto attivamente. Si collega a sequelize e bookshelf.js.
seebiscuit,

150

Sceglierei Sequelize per la sua eccellente documentazione. È solo un'opinione onesta (non ho mai usato così tanto MySQL con Node).


10
Vorrei anche sottolineare che node-orm2 o persistence.js non forniscono un meccanismo di migrazione. persistence.js non supporta postgres. sequelize fa entrambe queste cose.
airtonix,

4
Ho usato node-orm2 e grazie alla migliore documentazione di Sequelize sono stato in grado di farlo funzionare molto più facilmente
Michael J. Calkins,

2
@Gelidus Dove hai trovato queste informazioni?
William Lepinski il

14
Purtroppo, la documentazione di Sequelize è diventata recentemente terribile. Ho iniziato a utilizzare Sequelize di recente e sono rimasto piuttosto soddisfatto dai documenti. Ora è una pila generata automaticamente di collegamenti non funzionanti, informazioni obsolete ed esempi incompleti. Continuerò comunque con questo. Non è così difficile da imparare.
Brad

2
Ho appena cancellato il mio vecchio commento e ora sono d'accordo al 100% con @Brad, purtroppo :(
Andrey Popov,

19

Prima di tutto, tieni presente che non ho usato nessuno dei due (ma ho usato Node.js).

Entrambe le librerie sono documentate abbastanza bene e hanno un'API stabile. Tuttavia, persistence.js sembra essere utilizzato in più progetti . Non so se lo usano ancora tutti, comunque.

Lo sviluppatore di sequelize a volte ne blog su blog.depold.com . Quando desideri utilizzare le chiavi primarie come chiavi esterne, avrai bisogno della patch descritta in questo post del blog . Se desideri assistenza per persistence.js, è disponibile un gruppo Google.

Dagli esempi che ho scoperto che sequelize è un po 'più simile a JavaScript (più zucchero) rispetto a persistance.js ma ha il supporto per un minor numero di archivi dati (solo MySQL, mentre persistance.js può persino utilizzare gli archivi nel browser).

Penso che il sequelize potrebbe essere la strada giusta per te, poiché hai solo bisogno del supporto di MySQL. Tuttavia, se hai bisogno di alcune funzionalità utili (ad esempio la ricerca) o desideri utilizzare un database diverso in un secondo momento, dovrai utilizzare persistence.js.


1
sembra che persistencejs.org stia ora indicando un sito indesiderato, solo GitHub funziona
sansknwoledge

10

Una delle principali differenze tra Sequelize e Persistence.js è che il primo supporta un STRINGtipo di dati, ad es VARCHAR(255). Mi sentivo davvero a disagio nel fare tutto TEXT.


7
Attualmente Persistence.js supporta anche VARCHAR.
alehro,

8
In database come PostgreSQL, TEXT e VARCHAR sono esattamente gli stessi, l'unica differenza è che se si inserisce un limite di byte (VARCHAR (255)), si ha un overhead per la verifica del limite. Non c'è assolutamente alcun problema nell'uso di TEXT per tutto in PostgreSQL.
riscritto il

3
L'uso di TEXT in PostgreSQL è in realtà la migliore pratica, anche se non è portatile.
cowbert,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.