Scala Slick 更新

Scala Slick update

我是 scala 的新手。我必须编写更新语句来更新属性 table 中的值。

def updateValue(key: String, value: String) = Try(Tables.Properties.filter(_.key === key).map(j => j.value).update(Option(value)) ) match {
   case success => println("Record sucessfully updated")
   case failure => println("An error occurred")
}

上面的方法执行时没有任何错误,但是当我签入 table 时,它没有更新 table 中的任何值。我还有什么要补充的吗?

我明白了。我应该使用 db.run() 来更新。

def updateValue2(key: String, value: String) = {
  val action = Tables.Properties.filter(_.key === key).map(j => j.value).update(Option(value))
  db.run(action)
}

您想要 Success(x)Failure(x),而不是 success/failure

当你在 case 之后使用小写名称时,你所拥有的是一个用结果填充的变量,这意味着 case success 将始终执行(即无论变量 success 将被填充)并且 case failure 永远不会执行。

括号中的变量填充成功的结果(即Success(a)a保存结果)或抛出的异常(即Failure(b)b持有例外)。