【发布时间】:2016-04-11 02:03:58
【问题描述】:
我正在尝试构建一个简单的 RESTful 服务,该服务对数据库执行 CRUD 操作并返回 JSON。我有一项服务遵循这样的 API
GET mydomain.com/predictions/some%20string
我使用一个 DAO,其中包含我创建的以下方法来检索相关预测:
def getPrediction(rawText: String): Prediction = {
val predictionAction = predictions.filter{_.rawText === rawText}.result
val header = predictionAction.head
val f = db.run(header)
f.onComplete{case pred => pred}
throw new Exception("Oops")
}
但是,这不可能,所以我开始阅读有关Option 的信息。我相应地更改了我的代码:
def getPrediction(rawText: String): Option[Prediction] = {
val predictionAction = predictions.filter{_.rawText === rawText}.result
val header = predictionAction.headOption
val f = db.run(header)
f.onSuccess{case pred => pred}
None
}
这仍然感觉不太对劲。调用这些过滤器、返回结果和处理任何不确定性的最佳方式是什么?
【问题讨论】:
-
哪个版本的 slick?
-
@marcospereira
3.1.1。我想我是通过添加return Some(red)和return None来解决的。我阅读了更多关于Option的内容,并正在使用.isEmpty来决定要做什么。我仍然对使用Slick的最佳方式感到好奇,尽管文档似乎很模糊。例如,还有DBIO序列。不确定哪个最好用。