首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Play Slick:如何从play-slick 3.0.0中的DB表中获取所选字段?

Play Slick:如何从play-slick 3.0.0中的DB表中获取所选字段?
EN

Stack Overflow用户
提问于 2019-12-02 09:27:22
回答 1查看 91关注 0票数 0

我刚开始玩框架游戏。我正在开发一个基于play的应用程序,在这个应用程序中,我希望从DB中获取一个对象列表,其中将包含一些选定的字段。为了获取我使用的所有字段,我使用以下代码:

代码语言:javascript
复制
case class Mail(txID: String,
               timeStamp: Long,
               toUserID: String,
               mailContent: String,
               mailTemplateFileName: String,
               fromID: String,
               toID: String
               )
代码语言:javascript
复制
def getLogFromIDFuture(userID: String): Future[Option[List[Mail]]] = cache.getOrElseUpdate[Option[List[Mail]]](userID) {
    val resultingUsers = db.run(mailsData.filter(x => x.toUserID === userID).result)
    val res = Await.result(resultingUsers, Duration.Inf)
    res.map(t => t) match {
      case t if t.nonEmpty =>
        Future(Some(t.toList))
      case _ => Future(None)
    }
  }

因此,我的问题是如何只获取timeStamp、toUserID、mailContent、fromID、toID字段作为像UserMessage(timeStamp: Long, toUserID: String, mailContent: String, fromID: String, toID: String)这样的对象列表。我试着搜索这个,但没有得到任何令人信服的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-02 14:14:51

就像我在评论中说的,你可以这样做:

代码语言:javascript
复制
def getLogFromIDFuture(userID: String): Future[Option[List[UserMessage]]] = cache.getOrElseUpdate[Option[List[Mail]]](userID) {
    val resultingUsers = db.run(mailsData.filter(x => x.toUserID === userID).map(entry =>(entry.timeStamp, entry.toUserID, entry.mailContent, entry.fromID, entry.toID))
.result)// here you have the tuple of things
// add the mapping of the tuple to the UserMessage
    val res = Await.result(resultingUsers, Duration.Inf)
    res.map(t => t) match {
      case t if t.nonEmpty =>
        Future(Some(t.toList))
      case _ => Future(None)
    }
  }

你可以摆脱那个Await.result

代码语言:javascript
复制
    resultingUsers.map( match {
      case t if t.nonEmpty =>
       Some(t.toList)
      case _ => None
     }
)

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59135897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档