Mongodb 如何设置播放!2.5使用ReactiveMongo

Mongodb 如何设置播放!2.5使用ReactiveMongo,mongodb,scala,playframework,reactivemongo,Mongodb,Scala,Playframework,Reactivemongo,我使用Scala连接到MongoDB,使用: val driver = new MongoDriver val connection = driver.connection(List("myhost")) val db = connection.database("mydb") 这很好,但如何将其与播放控制器集成: @Singleton class ReactiveController @Inject() (implicit system: ActorSystem, materializer:

我使用Scala连接到MongoDB,使用:

val driver = new MongoDriver
val connection = driver.connection(List("myhost"))
val db = connection.database("mydb")
这很好,但如何将其与播放控制器集成:

@Singleton
class ReactiveController @Inject() (implicit system: ActorSystem, materializer: Materializer, val reactiveMongoApi: ReactiveMongoApi)
    extends Controller with MongoController with ReactiveMongoComponents {
我是否需要在我的DB配置中注入自定义的
ReactiveMongoApi

或者我需要用我的DB设置修改application.conf吗

我正在使用play 2.5并提供以下代码:

package api

import reactivemongo.api.{ DB, MongoConnection, MongoDriver }

trait ReactiveMongoApi {
  def driver: MongoDriver
  def connection: MongoConnection
  def db: DB
}
但我不确定如何将其与我的Play应用程序集成


我想我还不知道一些标准的方法来配置数据库源与播放!应用程序?

确保在application.conf中有正确的配置

play.modules.enabled += "play.modules.reactivemongo.ReactiveMongoModule"
mongodb.uri = "mongodb://localhost:27017/demodb"
您需要注入和更改mongo代码,如下所示

class MongoUserDao @Inject() (val reactiveMongoApi: ReactiveMongoApi)
extends UserDao {
//  val users = reactiveMongoApi.db.collection[JSONCollection]("users") -- old API
//   def find(userId:UUID):Future[Option[User]] =
//    users.find(Json.obj("id" -> userId)).one[User]  -- old code

  def usersF = reactiveMongoApi.database.map(_.collection[JSONCollection]("users"))  //new API

  def find(userId:UUID):Future[Option[User]] = for {
    users <- usersF
    user <- users.find(Json.obj("id" -> userId)).one[User]
  } yield user     // new code
}
class MongoUserDao@Inject()(val reactiveMongoApi:reactiveMongoApi)
扩展UserDao{
//val users=reactiveMongoApi.db.collection[JSONCollection](“users”)--旧API
//def find(userId:UUID):未来[选项[用户]]=
//users.find(Json.obj(“id”->userId)).one[User]--旧代码
def usersF=reactiveMongoApi.database.map(u.collection[JSONCollection](“users”)//新API
def find(userId:UUID):Future[Option[User]]=for{

用户如果您阅读了问题中链接的文档,您可以看到“配置数据库访问”部分,这表明您需要在
application.conf
中添加
mongodb.uri
设置,并添加play.modules.enabled+=“play.modules.reactivemongo.ReactiveMongoModule”如果您想要一个Play 2.5的工作示例,并使用最新的MongoDB驱动程序作为参考,那么请查看我不了解它是如何工作的。如果我理解得很好,ReactiveMongoApi没有名为“database”的属性,并且如果我写“db”,我就不能在后面调用“map”。我应该导入“ReactiveMongoApi”吗从另一个地方?@Pariksheet\u Barapatre感谢您的回答这些是在0.11版本中引入的新API。请确保使用“org.reactivemongo”%%“play2 reactivemongo”%%“0.11.14”,导入语句将是-import play.modules.reactivemongo.ReactiveMongoApi