1

私はスプレー、akka、scala、reactivemongo プロジェクトで作業しており、この特性を持っています

trait PersistenceManager {

  val driver = new MongoDriver
  val connection = driver.connection(List("localhost"))

  def loan[A](collectionName: String)(f: BSONCollection => Future[A]): Future[A] = {
    val db = connection("flujo_caja_db")
    val collection = db.collection(collectionName)
    f(collection)
  }
}

また、次のようにその特性を使用する Dao のオブジェクトがあります。

object Dao extends PersistenceManager {

   def find = loan("users"){
     collection =>
          collection.find(BsonDocument())....
   }

}

データベースの val を persistencemanager トレイトでインスタンス化するのは正しいですか? それは本当にうまくいきます。

ありがとうございました!

4

1 に答える 1

5

MongoDriver複数の接続プールが作成されるのを防ぐために、次のように定義する必要があると思います。

object PersistenceManager{
  val driver = new MongoDriver
  val connection = driver.connection(List("localhost"))
}


trait PersistenceManager {
  import PersistenceManager._

  def loan[A](collectionName: String)(f: BSONCollection => Future[A]): Future[A] = {
    val db = connection("flujo_caja_db")
    val collection = db.collection(collectionName)
    f(collection)
  }
}
于 2014-05-13T17:07:29.897 に答える