在 Scala 中从控制器调用方法时遇到问题

having problems calling a method from controller in scala

我正在使用带有 scala 和 slick 的 playframework。

在我的 dto (dao) 中,我这样做:

class processDTO @Inject() (protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile]
  with ProcessTemplatesComponent {
  import driver.api._

  private val processTemplates = TableQuery[ProcessTemplates]

  def getAll(): Future[Seq[ProcessTemplatesModel]] = db.run { processTemplates.to[Seq].result }
}

我在控制器中这样做:

@Singleton
class ProcessesController @Inject() (processDTO: processDTO,  actionBuilder: ActionBuilders) extends Controller{

  def getProcesses() = actionBuilder.DynamicAction(name = "pureLuck").defaultHandler() {
    request =>
      processDTO.getAll().map(_.map(result => {
      }))
        .map(result => Ok(Json.toJson(result)))
  }
}

现在我收到了这个错误

该错误告诉您您需要了解的内容。在文件顶部添加 import scala.concurrent.ExecutionContext.Implicits.global 应该可以修复它。

首先你需要导入执行上下文。 PlayFramework 有自己的上下文。添加此导入 play.api.libs.concurrent.Execution.Implicits._ Play documentation

您还需要 return 来自此块代码的内容:

_.map(result => {})

目前你return单位无法转化为json.

一个问题是缺少其他人提到的执行上下文。

由于您的 json 错误,您需要实施 Write converter 将您的 ProcessTemplatesModel 对象转换为 json。