我用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)
感谢您的帮助!
答案 0 :(得分:2)
避免等待每个DBIO操作的两种方法
创建DBIO操作列表并使用DBIO.seq
收集并执行。
使用for -reherehension将所有DBIO操作组合成一个DBIO操作。
这将帮助您一次使用等待等待中间DBIO操作的结果。
在这两种情况下,您必须至少使用Await.result
一次等待主线程中的结果(即停止主线程退出)。