MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Minha ação do PlayFramework retorna antes que um futuro esteja pronto, como faço para atualizar um componente de página da web?


Action não foi projetado para trabalhar com futuros. Use Action.async , que irá "aguardar" (tecnicamente não esperar, mas agendar) para que o futuro termine:
def rect(swLon: Float, swLat: Float, neLon: Float, neLat: Float) = Action.async {
  val sb = new StringBuilder()
  sb.append("<tt>boundingBox: swLon=" + swLon + ", swLat=" + swLat + ", neLon=" + neLon + ", neLat=" + neLat + "</tt>")
  if (oDb.isDefined) {
    val collection: MongoCollection[Document] = oDb.get.getCollection(collectionName)
    val fut = getFutureOne(collection) // returns a Future[Seq[Document]]
    fut.map {docs => 
      setMongoJson(doc.toJson)
      Ok(sb.toString)
    } recover {
      case e => BadRequest("FAIL: " + e.getMessage)
    }
  } else Future.successful(Ok("Not defined"))
}

Dê uma olhada nisso para referência:https://www.playframework.com/documentation /2.4.x/ScalaAsync