优化数据库操作Slick 3

时间:2017-11-25 18:41:29

标签: postgresql scala slick

我用Slick创建了一个数据库。我正在尝试创建表格的模式,选择一些信息等等。这是我的模式创建代码:

val createUserTable = UserTable.table.schema.create
val createTaskTable = TaskTable.table.schema.create
Await.result(db.run(DBIO.seq(Queries.createUserTable, Queries.createTaskTable)), 2 seconds)

这段代码工作正常但我不想在每个查询中使用Await.result。我正在寻找的是至少按目的(创建,选择等)批量执行它们。我可以创建此方法来传递不同的操作:

def executeAction[T](action: DBIO[T]) =
    Await.result(db.run(action), 2 seconds)

所以我很好奇如何更改它以传递一些包含一系列查询的数据结构?例如,List(createUserTable, createTaskTable)

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

避免等待每个DBIO操作的两种方法

  1. 创建DBIO操作列表并使用DBIO.seq收集并执行。

  2. 使用for -reherehension将所有DBIO操作组合成一个DBIO操作。

  3. 这将帮助您一次使用等待等待中间DBIO操作的结果。

    在这两种情况下,您必须至少使用Await.result一次等待主线程中的结果(即停止主线程退出)。