3 Stimmen

Verwendung von db.open mit MongoDB und Nodejs

Ich habe zwei Fragen.

Erstens verweist die MongoDB-Dokumentation ständig auf die Verwendung von db.open() und dann db.collection() aber ich habe festgestellt, dass ich immer noch in der Lage bin, mit der Api zu arbeiten, auch ohne den ersten Aufruf db.open(). Ist es sicher, dies zu tun? Ruft die Api intern db.open() ?

http://mongodb.github.com/node-mongodb-native/api-generated/db.html#collection

Zweitens: Gibt es eine Parallele in der db Objekt, das angibt, ob db.open() genannt wurde? Wenn nicht, wie könnte ich sonst herausfinden, ob db.open() genannt wurde?

Die Argumentation ist, weil ich mehrere Funktionen, die mit Mongo kommunizieren gebaut haben, aber wenn einige der Funktionen miteinander interagieren, erhalte ich Fehler, die die Datenbank kann nicht "geöffnet" mehrere Male sein.

EDITAR

Ich fand diese Param in der db Objekt. Es scheint, dass dies ein bool ist, der die Verwendung des db.open() aber ich bin mir nicht 100%ig sicher, weiß das jemand? db.serverConfig.internalMaster

4voto

christkv Punkte 4250

Wenn Sie wissen müssen, ob ein DB-Objekt verbunden ist, können Sie db._state == 'connected' oder db.serverConfig.isConnected() überprüfen.

Wahrscheinlich ist es besser, ein bekanntes verbundenes Objekt an Ihre Mvc zu übergeben und sicherzustellen, dass die Datenbank geöffnet ist, bevor Sie die Anwendung hochfahren.

1voto

Martin Punkte 4951

Die Argumentation ist, weil ich mehrere Funktionen, die mit Mongo kommunizieren gebaut haben, aber wenn einige der Funktionen miteinander interagieren, erhalte ich Fehler, die die Datenbank kann nicht "geöffnet" mehrere Male sein.

Sie sollten das db-Objekt wiederverwenden, anstatt es mehrfach zu öffnen - dasselbe sollte mit Sammelobjekten geschehen, da ihre Erstellung mit Kosten verbunden ist.

0voto

rasmeister Punkte 1956

Ich bin mit einem Javascript-Treiber, und es verwendet eine "openCalled" boolesche Eigenschaft direkt aus dem DB-Objekt. Referenzieren es ist so einfach wie

if (!db.openCalled) { //open database }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X