Play (Scala)、Reactivemongo 和多个数据库
Play (Scala), Reactivemongo and multiple databases
因此,一直在使用 Play、ReactiveMongo 和 MongoDB 进行一个较小的项目。我的问题是关于 ReactiveMongo 的 application.conf
部分,有标准的可搜索的部分:
mongodb = {
db = "db1"
servers = [ "localhost:27017" ]
credentials = {
username = "auser"
password = "apassword"
}
}
并在 Scala 中访问集合:
def sessionCollection: JSONCollection = db.collection[JSONCollection]("session")
因此,由于 MongoDB 在数据库级别锁定以进行写入,我正在寻找使用多个数据库的解决方案。
问题是:我如何配置多个数据库,以便我可以像上面那样从这些数据库中定义集合?
MongoDB2.6.x,玩2.3.x,Reactivemongo 0.10.5.0.akka23
编辑:我应该说我已经知道 this,用代码手动完成,但我想知道是否有任何我未能通过 [=28 达到的特定于 Play 的已知解决方案=].
在您的 Play 应用程序中,您可以使用具有多个连接池的 ReactiveMongo(可能具有不同的副本集 and/or 不同的选项),使用 @NamedDatabase
注释。
考虑以下配置,其中包含多个连接 URI。
# The default URI
mongodb.uri = "mongodb://someuser:somepasswd@localhost:27017/foo"
# Another one, named with 'bar'
mongodb.bar.uri = "mongodb://someuser:somepasswd@localhost:27017/lorem"
然后依赖项注入可以 select API 个使用名称的实例。
进口javax.inject.Inject
import play.modules.reactivemongo._
class MyComponent @Inject() (
val defaultApi: ReactiveMongoApi, // corresponds to 'mongodb.uri'
@NamedDatabase("bar") val barApi: ReactiveMongoApi // 'mongodb.bar'
) {
}
因此,一直在使用 Play、ReactiveMongo 和 MongoDB 进行一个较小的项目。我的问题是关于 ReactiveMongo 的 application.conf
部分,有标准的可搜索的部分:
mongodb = {
db = "db1"
servers = [ "localhost:27017" ]
credentials = {
username = "auser"
password = "apassword"
}
}
并在 Scala 中访问集合:
def sessionCollection: JSONCollection = db.collection[JSONCollection]("session")
因此,由于 MongoDB 在数据库级别锁定以进行写入,我正在寻找使用多个数据库的解决方案。
问题是:我如何配置多个数据库,以便我可以像上面那样从这些数据库中定义集合?
MongoDB2.6.x,玩2.3.x,Reactivemongo 0.10.5.0.akka23
编辑:我应该说我已经知道 this,用代码手动完成,但我想知道是否有任何我未能通过 [=28 达到的特定于 Play 的已知解决方案=].
在您的 Play 应用程序中,您可以使用具有多个连接池的 ReactiveMongo(可能具有不同的副本集 and/or 不同的选项),使用 @NamedDatabase
注释。
考虑以下配置,其中包含多个连接 URI。
# The default URI
mongodb.uri = "mongodb://someuser:somepasswd@localhost:27017/foo"
# Another one, named with 'bar'
mongodb.bar.uri = "mongodb://someuser:somepasswd@localhost:27017/lorem"
然后依赖项注入可以 select API 个使用名称的实例。
进口javax.inject.Inject
import play.modules.reactivemongo._
class MyComponent @Inject() (
val defaultApi: ReactiveMongoApi, // corresponds to 'mongodb.uri'
@NamedDatabase("bar") val barApi: ReactiveMongoApi // 'mongodb.bar'
) {
}