Wie man DRY bei Verwendung von node-mongodb-native hält

8
%Vor%

Aber wir haben db.open nicht jedes Mal geschrieben, wenn wir etwas tun wollen, aber wir müssen sicherstellen, dass db geöffnet hat, wenn wir es benutzen.

Wir werden immer noch keinen Handle-Fehler im selben Code haben.

wir können die Sammlung auch wiederverwenden.

genau so

%Vor%     
guilin 桂林 28.02.2011, 07:56
quelle

3 Antworten

1

Beantworte meine eigene Frage. Weil es keine guten Optionen mehr gibt, mache ich es selbst. Ich beginne ein Projekt, um es zu vereinfachen, schau node-mongoskin .

    
guilin 桂林 08.04.2011, 02:04
quelle
2

Ich habe eine Server-Anwendung mit mongodb zum Loggen implementiert. Ich implementierte den Datenzugriff mit einigen Provider-Klassen, wie im Beispiel gezeigt.

provider.filelog.js

%Vor%

Da ich Grasshopper als meine http-Middleware verwende, kann ich die Provider einfach mit der von gh:

server.js

%Vor%

Der Zugriff auf die Provider in jeder Controller-Funktion ist jetzt ein Kinderspiel:

%Vor%

Diese Implementierung ist ziemlich spezifisch für Grasshopper (da es DI verwendet), aber ich denke, Sie werden die Idee bekommen. Ich habe auch eine Lösung mit Express und Mungo implementiert, Sie finden sie hier . Diese Lösung ist ein wenig sauberer als die Verwendung des nativen Treibers, da sie Modelle für die Verwendung mit der Datenbank bereitstellt.

Aktualisieren

Nur so: Wenn Sie wirklich am DRY-Prinzip festhalten wollen, hören Sie auf, selbst an einer ORM-Implementierung zu basteln und verwenden Sie Mungo . Wenn Sie spezielle Funktionen wie Map / Reduce benötigen, können Sie immer noch den nativen Treiber verwenden (auf dem Mongoose gebaut ist).

    
schaermu 28.02.2011 08:19
quelle
0

Ich spreche theoretisch hier, ohne Rücksicht auf Mongo.

Ich würde Ihnen empfehlen, eine Art Verpackung zu erstellen.

Eine Datenzugriffsebene oder zumindest Modelle, alles hängt von Ihrer Architektur und Ihren Bedürfnissen ab, und das ist auf deiner Seite.

Schließen Sie einfach den Zugriff auf mongodb mit einer Schicht abstrakter Befehle ein, schreiben Sie dann ein abstraktes Modellobjekt, und alle anderen Modellobjekte erben von diesem und stellen automatisch alle Getter und Setter für die Attribute des Datensatzes ein, den Sie aus dem Objekt gezogen haben Mongo db.

Zum Aktualisieren geben Sie einfach eine Sicherungsmethode, die alle vorgenommenen Änderungen iteriert und speichert.

Da es kein relationales ist und ich nicht weiß, ob dies für Ihr Design gut geeignet ist, ist das Modell hier möglicherweise nicht nützlich.

Hoffe, das hilft, Viel Glück!

    
Cu7l4ss 08.03.2011 22:45
quelle

Tags und Links