2016-07-28 12 views
0

Welche Methode sollte ich unter Mongo::Client Objekt aufrufen, um zu überprüfen, ob die Verbindung zum Datenbankserver aktiv ist?Wie überprüft man die Verbindung zu mongodb ist aktiv?

require 'mongo' 
host = '127.0.0.1' 
port = '27017' 

client = Mongo::Client.new("mongodb://#{host}:#{port}") 
+0

'gültig' definieren? Es wird einen Fehler auslösen, wenn es keine Verbindung herstellen konnte – Anthony

+0

Ich habe gerade versucht (mongo 2.2.x) und es wird kein Fehler ausgelöst (scheint wie es im Hintergrund oder etwas versucht) –

Antwort

1

Als mtj, vorgeschlagen zu prüfen, ob die Verbindung gültig/aktiv Ich versuche, um die Liste der Datenbanken wie folgt zu erhalten:

require 'mongo' 
host = '127.0.0.1' 
port = '27017' 

begin 
    client = Mongo::Client.new("mongodb://#{host}:#{port}") 
    client.database_names 
rescue Mongo::Auth::Unauthorized, Mongo::Error => e 
    info_string = "Error #{e.class}: #{e.message}" 
    puts info_string 
end 
0

MongoClient in verschiedenen Sprachen als „lazy Stub“ umgesetzt werden, so dass Sie nicht sofort Fehlermeldung erhalten, wenn die Verbindung nicht möglich ist. Stattdessen erhalten Sie den Fehler, wenn eine konkrete Abfrage über die Zeile geht.

Soweit ich weiß, der einzige Weg, sicher zu sein, dass eine tatsächliche Verbindung stattfindet, ist, einige Daten vom Server abzufragen. Zum Beispiel lesen wir in unserem Projekt einfach die Liste der Datenbanken bei der Initialisierung.

Hinweis: Da die Abfrageergebnisse auch faul Stubs sein können, stellen Sie sicher, tatsächlich lesen das Ergebnis in Ihrem Client ;-)

Verwandte Themen