Dies ist normalerweise ein einfaches Problem, aber ich bin nicht ganz sicher, wie man das in Scala löst, da es typengerecht ist. Ich habe eine Klasse, in der ich eine einfache Verbindung zu meiner MongoDB-Instanz eingerichtet habe. Gerade jetzt lokal mache ich die gottgläubige Vorstellung, einfach die Produktionskonfigurationszeilen zu kommentieren und die lokalen/dev-Zeilen auszukommentieren. Hier ist, was jeder sieht aus wie:Verwenden von typesafe config zum Verwalten meiner Datenbankverbindung
// production
object MongoReplicaConnection {
def mongoDb = {
val addresses = List(new ServerAddress("10.1.1.2" , 27017), new ServerAddress("10.1.1.3" , 27017), new ServerAddress("10.1.1.4" , 27017))
val mongoConn = MongoConnection(addresses)
val db = mongoConn("mydb")
db
}
}
// local development
object MongoReplicaConnection {
def mongoDb = {
val mongoConn = MongoConnection()
val db = mongoConn("mydb_local")
db
}
}
Soweit den Namen der Datenbank immer übergeben, das ist trivial - es ist nur eine Zeichenfolge aus der Konfigurationsdatei greifen. Wo ich nicht an eine saubere Lösung denken kann, ist die Tatsache, dass ich eine Liste von ServerAddress-Instanzen verwende, um MongoConnection() zu initialisieren oder keine List an MongoConnection in einem lokalen/dev-Setup zu übergeben.
Wie können Sie ein Tool wie die Konfiguration von typesafe hier verwenden? Ich gehe davon aus, dass ich eine leere List/Array für eine lokale db-Verbindung einfach an MongoConnection() übergeben kann, aber ich bin mir nicht ganz sicher, wie ich die Produktionsdatenbank konfigurieren kann, ohne die mongoDb-Funktion zu ändern. Ich habe mir ein Tool wie dieses angesehen, um mir bei dem Prozess zu helfen: https://github.com/typesafehub/config
dieses auf dem richtigen Weg ist, aber es wird nicht funktionieren, weil Sie nicht nur eine Liste zu MongoConnection passieren kann. Es erwartet eine Liste von ServerAddress-Instanzen. – randombits
Ich bin mir nicht sicher, ob ich Ihre Anforderung richtig erhalten habe. Ich habe die Lösung leicht modifiziert. Sie können keine benutzerdefinierten Klassen/Typen innerhalb der Konfigurationsdatei verwenden. –