在Heroku上使用Play Framework设置MongoLab或MongoHQ

时间:2012-09-11 11:23:44

标签: mongodb heroku playframework

我似乎无法找到在Heroku上使用Play Framework设置MongoHQ或MongoLab的任何说明。

我可以遵循的Spring Framework(我相信)https://devcenter.heroku.com/articles/mongohq#use-with-java是否有类似的内容?

或者是否有人可以提供任何指示。

2 个答案:

答案 0 :(得分:7)

MongoHQ将MONGOHQ_URL添加到您的Heroku配置环境

heroku config

返回类似

的内容
MONGOHQ_URL: mongodb://heroku:1234@someserver.mongohq.com:10071/app1234

在您的应用程序中使用此envronment变量来获取将Mongo连接到的URI。我有一个可以在Procfile中指定的override属性

web: target/start -Dhttp.port=$PORT -Dmongodb.uri=$MONGOHQ_URL

在Play模型类中,我用以下方式连接并查询Mongo:

val mongoUri = MongoUri(Play.configuration.getString("mongodb.uri").get)

val mongoCollection = mongoUri.connectDB match {
  case Left(thrown) => throw thrown
  case Right(database) => {
    mongoUri.username.map { username =>
      mongoUri.password.map { password =>
        database.underlying.authenticate(username,password)
      }
    }
    database.apply("mycollection")
  }
}

def findSomething(something:String) = {
  val searchTerm = MongoDBObject("something" -> something)
  mongoCollection.findOne(searchTerm) map { mongoObject =>
    Logger.info("Found %s".format(mongoObject.getAs[String]("somethingElse")))
  }
}

假设:Play 2.0,Scala,Casbah

答案 1 :(得分:3)

以下是使用MongoHQ,Play 2,Scala并在Heroku上运行的示例应用: https://github.com/jamesward/play2bars/tree/scala-mongodb

没有真正的说明,只是一些简单的代码。