【发布时间】:2018-05-10 08:51:43
【问题描述】:
有一个包含键、值的表。
还有一个自动递增 PK 的表。
从第一个表中获取键的值。如果不存在插入和 返回默认值。 根据它查询其他表。
返回过滤结果和值。
所以我可以试试:
def lastLogs(limit: Long = 666): Future[(Long, Seq[VLogEntry])] = {
val q: DBIO[(Long, Seq[VLogEntry])] = {
for {
existing <- kvTable.filter(_.key === "log").result.headOption
conf = existing getOrElse KV(key = "log", value = "0")
last = conf.value.toLong
rds = vLogTable.filter(_.id > last).take(limit).result
_ <- kvTable.insertOrUpdate(conf)
} yield {
(last, rds)
}
}
db.run(q)
}
这会产生编译错误:
found : HipDAO.this.domain.dbConfig.profile.StreamingProfileAction[Seq[HipDAO.this.domain.VLogTable ...
required: Seq[db.types.Types.VLogEntry]
在 Slick 2 中,我可以在会话中调用 list 或 result 查询。 我如何在 Slick 3 中做到这一点。
【问题讨论】:
-
您的
rds =应该是rds <-。不确定这是否能解决所有问题,查看完整错误以及报告的位置会很有用。 -
谢谢。实际上,我在写这篇文章后就想到了,但留下它以防有人提出如何阅读此错误消息。