Ich bin hier mit einer Analyselähmung konfrontiert. Es gibt so viele Möglichkeiten, Datenbanken mit NodeJS zu programmieren, dass ich etwas verloren habe.
Ich baue einen API-Server mit Express, der mit einer HTML5-App auf dem Handy kommuniziert. Ich habe mich für PostgreSQL entschieden, weil meine Daten "sehr relational" sind und der neue PostgreSQL-JSON-Datentyp mein Leben viel einfacher macht.
Leider kann ich keine Bibliothek für PostgreSQL finden, die den neuen JSON-Datentyp nutzt oder diesen freilegt. Ich dachte daran, Sequelize zu verwenden und ein nettes ORM zu haben oder meine eigenen Sachen mit dem rohen pgsql-Modul zu rollen.
Kann jemand eine Ahnung haben? Ich würde dies auf einigen NodeJS Stackexchange fragen, aber ich denke nicht, dass wir einen so spezifisch wie diesen haben.
pg-promise ist der einfachste Weg, PostgreSQL mit Node JS zu verwenden, der node-postgres mit Versprechen, für automatisierte Verbindungen und Transaktionen.
Objection.js hat wirklich gute Unterstützung für relationale Daten sowie für JSONB Daten.
Sie müssen keine Tricks ausführen, um JSON-Daten zu analysieren / zu stringieren. Alles ist automatisch erledigt. Sie können Schemas deklarieren, um die Validierung von Daten zu ermöglichen, die Sie DB usw. hinzufügen.
Man kann geschachtelte relationale Objekthierarchien in die DB einfügen, und Zeilen werden erzeugt, um Tabellen zu korrigieren, und Sie haben Javascript-API, um Daten innerhalb von JSON-Spalten abzufragen, so dass Sie auch kein RAW SQL schreiben müssen.
BEARBEITEN:
Keine Ahnung, warum die Down-Votes hier (seine -2 aktuell), Objection.js
immer noch die beste Unterstützung für Postgresqls JSONB-Operationen in der Node-Welt haben (und die einzige Wahl in den aktuellen Antworten, die spezielle Unterstützung für postgresql jsonb-Behandlung bietet) ).
Die letzte Ergänzung bestand darin, nur Teile von Daten innerhalb der JSONB-Spalte zu patchen, wobei in objection.js automatisch jsonb_set()
-Aufrufe für Sie erstellt werden.
zum Beispiel:
%Vor%erstellt eine Aktualisierungsabfrage wie folgt:
%Vor% Auch kann man ref()
-Syntax in fast jeder Abfrage-Generator-Methode wie in
oder
%Vor%oder sogar mit Joins
%Vor%Ich habe auch eine Antwort auf diese Frage gesucht und eine ähnliche Lösung gefunden.
%Vor% Damit können Sie pg
mit Promise
s verwenden. Details hier Manuelles Promistifizieren von pg.connect mit Bluebird
Tags und Links json node.js postgresql