检查请求是否返回到数据库
Check that the request returned to the database
我有一个查询数据库的方法。
我想明白。如何检查 table 中是否有符合我条件的行?
def getMessage() = {
val query = messages.filter(_.status === true)
val action = query.result.head
val result = db.run(action)
//val sql = action.statements.head
val temp = result.map(_.phone)
Thread.sleep(3000)
println(temp.toString)
}
例如,我需要该方法如何工作的示例逻辑。
def getMessage():String = {
val query = messages.filter(_.status === true)
val action = query.result.head
val result = db.run(action)
//val sql = action.statements.head
val temp = result.map(_.phone)
Thread.sleep(3000)
if (temp != "null") return temp
else return "null"
}
db.run
returns a Future
所以你需要在完成后检查结果:
db.run(action).onComplete{
case Success(res) =>
// Process result in res
case Failure(e) =>
// Handle error case
}
你不应该 Sleep
或等待 Future
,所以 getMessage
应该 return Future[String]
调用代码可以处理结果准备好了。
def getMessage(): Future[String] = {
val query = messages.filter(_.status === true)
val action = query.result.head
db.run(action)
}
更一般地说,您需要了解 Future
的工作原理以及如何修改结果 (map
)、链式多个 Future
s (flatMap
) 或将多个 Future
作为单个 Future
(Future.sequence
).
处理
一般来说,您应该尽可能长时间地在 Future
中进行处理。
我有一个查询数据库的方法。 我想明白。如何检查 table 中是否有符合我条件的行?
def getMessage() = {
val query = messages.filter(_.status === true)
val action = query.result.head
val result = db.run(action)
//val sql = action.statements.head
val temp = result.map(_.phone)
Thread.sleep(3000)
println(temp.toString)
}
例如,我需要该方法如何工作的示例逻辑。
def getMessage():String = {
val query = messages.filter(_.status === true)
val action = query.result.head
val result = db.run(action)
//val sql = action.statements.head
val temp = result.map(_.phone)
Thread.sleep(3000)
if (temp != "null") return temp
else return "null"
}
db.run
returns a Future
所以你需要在完成后检查结果:
db.run(action).onComplete{
case Success(res) =>
// Process result in res
case Failure(e) =>
// Handle error case
}
你不应该 Sleep
或等待 Future
,所以 getMessage
应该 return Future[String]
调用代码可以处理结果准备好了。
def getMessage(): Future[String] = {
val query = messages.filter(_.status === true)
val action = query.result.head
db.run(action)
}
更一般地说,您需要了解 Future
的工作原理以及如何修改结果 (map
)、链式多个 Future
s (flatMap
) 或将多个 Future
作为单个 Future
(Future.sequence
).
一般来说,您应该尽可能长时间地在 Future
中进行处理。