我正在嘗試測驗副作用是否被執行。兩者都不
DBIOAction.successful(()).cleanUp(_.fold {
println("yeay!")
DBIOAction.successful(())
} { _ =>
println("aww.")
DBIOAction.successful(())
})
也不
DBIOAction.successful(()).asTry.map {
case Succeed(_) => println("yeay!")
case Failure(_) => println("aww.")
}
列印任何東西。我對 Slick 不太熟悉,但它可能需要放在run某個地方。有沒有辦法為測驗目的提供輕量級運行時?
uj5u.com熱心網友回復:
查閱I/O 操作的檔案:
可以在資料庫上執行的操作稱為資料庫 I/O 操作(
DBIOAction)。對查詢和表的多項操作會創建 I/O 操作, 例如myQuery.result、或。動作可以由組合符組成,如,或.myQuery.result.headOptionmyQuery = datamyTable.schema.createandThenflatMapDBIO.seqtransactionally就像查詢一樣,I/O 操作只是對操作的描述。創建或組合操作不會在資料庫上執行任何操作。組合動作總是由其他動作的嚴格線性序列組成。動作的一部分永遠不會同時運行。
關于結果:
可以在資料庫上運行任何操作以獲取結果(或執行副作用,例如更新資料庫)。執行總是異步的,即它不會阻塞呼叫者執行緒。可以運行任何型別的操作以獲得
Future最終完成并在執行完成時獲得結果 (myDatabase.run(myAction))。產生一系列值的操作通常也支持流式處理結果。這樣的動作可以與資料庫結合以產生反應式流Publisher(myDatabase.stream(myAction))。當消費者訂閱發布者時執行該操作。
您必須評估database.run(ioAction)任何副作用(包括)。println
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/480332.html
