Slick(3.0.2)を使用して、自分のプロジェクトでスカラーを使ってデータベースを操作しようとしました。 は、ここで私は私が解決策何回Googleを試してみましたが、何の答えは私の混乱を解決することはできません 「F」から どうもありがとうクエリ結果の値を滑らかに取得する方法
答えて
query.result
のタイプはDBIO
です。 db.run
に電話すると、Future
に変わります。
あなたがデータを印刷したい場合は、あなたがプレーしている場合(、データでの作業を続行しますが、将来にブロックする場合はf.map { case (username, password, role, delFlg) ⇒ ... }
を使用して結果を取得するには
import scala.concurrent.ExecutionContext.Implicits.global
f.foreach(println)
を使用先物にブロッキングが悪い習慣である - 例えば約REPL)で、これは本番コードで何をしたいのかではなく、心の中で
import scala.concurrent.Await
import scala.concurrent.duration._
Await.result(f, 1.second)
クマのようなものを使用します。
一般的に、Scalaのコアタイプと先物について具体的に学習することをお勧めします。 db.run
に電話するとスリックな「責任」が終了します。私はまだ非常に明確に、 は、私はそれが作るあなたの方法のf.map {場合(ユーザ名、パスワード、役割、delFlg)⇒...} では試していないため、私はまだあなたにいくつか質問をしたいため
をデータを読み取ることができますどのようにコード
val query = table.filter(_.username === "LeoAshin").map { user => (user.username, user.password, user.role, user.delFlg) }
val f = db.run(query.result)
の私の一部であり、 fは将来のであり、必要な緊急度に応じて値を取得するためにできることがいくつかあります。待っている間に何もできることがなければ、それが完了するのを待ってから値を取得するだけです。おそらく、最も簡単には、次の行(Slick documentationから)に沿っている:
val q = for (c <- coffees) yield c.name
val a = q.result
val f: Future[Seq[String]] = db.run(a)
f.onSuccess { case s => println(s"Result: $s") }
あなたはその後、Fの結果に依存しないと、クエリの結果がされる他の事をする上で行くことができます非同期にコンソールに表示されます。
しかし、ほとんどの場合、他の操作(おそらく別のデータベースクエリ)の値を使用することをお勧めします。その場合、最も簡単なことは、理解のためにを使用することです。以下のような何か:
Qはあなたの最初のクエリの結果を取得し、別のものを構築する関数/メソッドであるfor (r <- f) yield db.run(q(r))
。これについての理解度はFutureとなります。
注意しなければならないことは、すべてのコードが実行された後で終了するプログラムでこれを実行する場合、プログラムが終了するのを防ぐためにAwait(Scala APIを参照)を使用する必要がありますあなたのdbクエリの1つはまだ動作しています。
- 1. Jsonの結果からデータセットの値を取得する方法
- 2. SQLクエリ結果を取得する方法を探して、結果から配列のIDをバインドするbindGrid
- 3. laravelでこのクエリの結果からデータを取得する方法
- 4. pythonでSQLiteクエリから単一の結果を取得する方法は?
- 5. この特定の「クエリ」の結果を取得する方法
- 6. 2番目のクエリの結果を取得する方法
- 7. フィルタ結果から値を取得
- 8. MYSQLで別のクエリの結果からクエリ結果を減算する方法
- 9. onPostExcecuteの結果の値をonCreateに取得する方法
- 10. 最初の結果の代わりにSQLの結果から2番目の値を取得する方法
- 11. JSPページでmysqlクエリの結果を取得する方法は?
- 12. java:URLクエリの結果を取得する方法
- 13. asynctaskの結果からMainActivityで使用する値を取得する方法
- 14. クエリと結果セットから単一の値を戻す方法
- 15. 各開始アルファベットからクエリ結果1回を取得する方法
- 16. vb.net:cmdから結果をテキストボックスに取得する方法
- 17. bashのMySQLクエリ結果からフィールドを取り出す方法
- 18. クエリ結果のサイズ_バイトを取得する
- 19. MySQLクエリの結果からフィールドメタデータを取得する
- 20. jsonからangularjsへの結果を取得する方法
- 21. SQLテーブルから特定の結果を取得する方法
- 22. WF - XAMLワークフローからWorkflowInvokerの結果を取得する方法
- 23. ループから結果の数を取得する方法
- 24. vue.js asp.net-core-mvc結果セットから特定の値を取得する方法
- 25. 結果の列名と値を取得するクエリ?
- 26. 結果を取得するnode.js multipleStatementsクエリから?
- 27. Windows Live IDクエリからJSON結果を取得する
- 28. Task.Factory.StartNew <>から結果を取得する方法?
- 29. Oracleストアドプロシージャから配列結果を取得する方法
- 30. Laravelから配列結果セットを取得する方法
ごめん – LeoAshin
ごめんコンパイルエラー、もう少しサンプルコードを教えていただけますか? たとえば、delFlg == 1であるかどうかを判断したい場合は、次のステップを実行してください。 – LeoAshin
'...'をあなたの状態に置き換えてください。 –