我似乎无法找到在Heroku上使用Play Framework设置MongoHQ或MongoLab的任何说明。
我可以遵循的Spring Framework(我相信)https://devcenter.heroku.com/articles/mongohq#use-with-java是否有类似的内容?
或者是否有人可以提供任何指示。
答案 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
没有真正的说明,只是一些简单的代码。