Welches ORM soll ich für Node.js und MySQL verwenden? [geschlossen]

326

Ich schreibe ein Projekt neu, um Node.js zu verwenden. Ich möchte MySQL weiterhin als Datenbank verwenden (auch wenn es mir nichts ausmacht, das Schema neu zu schreiben). Ich suche ein einfach zu verwendendes ORM mit angemessener Leistung, das Caching, Viele-zu-Eins- und Viele-zu-Viele-Beziehungen unterstützt. Von den MySQL-ORMs, die ich finden konnte, scheinen Persistenz und Fortsetzung am ausgereiftesten zu sein. Hast du Erfahrung mit beidem? Was sind die relevanten Vor- und Nachteile, die ich bei meiner Entscheidung berücksichtigen sollte?

In der Nähe von Privman
quelle
Aber es ist ein sehr interessantes Thema. Möchten Sie Zugriff auf Entwickler von Drittanbietern erhalten, um Daten auf Ihrer Website zu ändern? Vielleicht ist es besser, eine Zwischen-JS-Bibliothek zu erstellen, die Anforderungsparameter (Metasprache) an ein Backend sendet?
Sergzach
2
@sergzach Möchtest du das näher erläutern? Google für "Cibering im Ruhezustand".
Ponzao
Hm ... Einige Websites erlauben Benutzeranwendungen. Oder ich habe dich nicht verstanden, entschuldige mich bitte.
Sergzach
2
@sergzach: Caching ist eigentlich ein ziemlich wichtiges Merkmal einer Reihe von ORM-Lösungen. Schauen Sie sich zum Beispiel Cayenne an.
Nate CK
Versuchen Sie es mit Oreo . github.com/will123195/oreo
Will

Antworten:

101

Darf ich Node ORM vorschlagen?

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

Es gibt eine Dokumentation in der Readme-Datei, die MySQL, PostgreSQL und SQLite unterstützt.

MongoDB ist seit Version 2.1.x verfügbar (veröffentlicht im Juli 2013)

UPDATE: Dieses Paket wird gemäß der README-Datei des Projekts nicht mehr verwaltet. Es empfiehlt stattdessen Bücherregal und Fortsetzung

dresende
quelle
27
Basierend auf den Dokumenten sieht es so aus, als ob Sequelize diesem Projekt weit voraus ist.
Tony O'Hagan
Es ist eine weitere großartige Option für Leute, die nach MySQL-ORM suchen. Die Syntax ist komplexer, aber auch schön.
Dresende
2
Das Projekt hat die URL geändert: github.com/dresende/node-orm2
Capy
Ich erhalte die Fehlermeldung "Fehler: Modul 'hat' kann nicht gefunden werden", wenn ich versuche, dies bereitzustellen. .. keine Menge an npm Installation oder Neuinstallation scheint zu helfen. Irgendwelche Vorschläge? Vielen Dank
Gene Bo
1
Node-orm2 wird nicht mehr aktiv gepflegt. Es verlinkt auf sequelize und bookshelf.js.
Seebiscuit
150

Ich würde Sequelize wegen seiner hervorragenden Dokumentation wählen . Es ist nur eine ehrliche Meinung (ich habe MySQL mit Node nie so oft benutzt).

Alessioalex
quelle
10
Ich möchte auch darauf hinweisen, dass node-orm2 oder persistence.js keinen Migrationsmechanismus bieten. persistence.js unterstützt keine Postgres. sequelize macht beides.
Airtonix
4
Ich habe node-orm2 verwendet und aufgrund der besseren Dokumentation von Sequelize konnte ich es viel einfacher zum Laufen bringen
Michael J. Calkins
2
@Gelidus Woher hast du diese Informationen?
William Lepinski
14
Leider ist die Sequelize-Dokumentation in letzter Zeit schrecklich geworden. Ich habe kürzlich angefangen, Sequelize zu verwenden und war sehr zufrieden mit den Dokumenten. Jetzt ist es ein automatisch generierter Stapel defekter Links, veralteter Informationen und unvollständiger Beispiele. Ich bleibe trotzdem dabei. Es ist nicht so schwer zu lernen.
Brad
2
Habe gerade meinen alten Kommentar gelöscht und bin jetzt zu 100% mit @Brad einverstanden, leider :(
Andrey Popov
19

Bitte beachten Sie zunächst, dass ich keines von beiden verwendet habe (aber Node.js verwendet habe).

Beide Bibliotheken sind recht gut dokumentiert und verfügen über eine stabile API. Persistence.js scheint jedoch in mehr Projekten verwendet zu werden . Ich weiß allerdings nicht, ob alle es noch benutzen.

Der Entwickler von Sequelize bloggt manchmal darüber auf blog.depold.com . Wenn Sie Primärschlüssel als Fremdschlüssel verwenden möchten, benötigen Sie den in diesem Blogbeitrag beschriebenen Patch . Wenn Sie Hilfe für persistence.js möchten, gibt es eine Google-Gruppe, die sich diesem Thema widmet.

Aus den Beispielen geht hervor, dass Sequelize etwas JavaScript-ähnlicher ist (mehr Zucker) als persistance.js, aber weniger Datenspeicher unterstützt (nur MySQL, während persistance.js sogar In-Browser-Stores verwenden kann).

Ich denke, dass Sequelize der richtige Weg für Sie sein könnte, da Sie nur MySQL-Unterstützung benötigen. Wenn Sie jedoch einige praktische Funktionen benötigen (z. B. Suche) oder später eine andere Datenbank verwenden möchten, müssen Sie persistence.js verwenden.

hey_lu
quelle
1
Es scheint, als ob persistencejs.org jetzt auf eine unerwünschte Site verweist. Nur GitHub funktioniert
sansknwoledge
10

Ein Hauptunterschied zwischen Sequelize und Persistence.js besteht darin, dass ersterer einen STRINGDatentyp unterstützt , d VARCHAR(255). H. Es war mir wirklich unangenehm, alles zu machen TEXT.

Josh Smith
quelle
7
Derzeit unterstützt Persistence.js auch VARCHAR.
Alehro
8
In Datenbanken wie PostgreSQL sind TEXT und VARCHAR genau gleich. Der einzige Unterschied besteht darin, dass Sie einen Overhead für die Überprüfung des Limits haben, wenn Sie ein Byte-Limit (VARCHAR (255)) festlegen. Es ist absolut kein Problem, TEXT für alles in PostgreSQL zu verwenden.
umgeschrieben
3
Die Verwendung von TEXT in PostgreSQL ist tatsächlich die bessere Vorgehensweise, auch wenn es nicht portabel ist.
Cowbert