我正在使用扩展 SecureSocial 的身份特征的用户类在 Slick 中实现用户表。我在从可选的不可存储数据库类型对象转换为可选的原始数据库类型时遇到问题。
参考:Slick docs、 SecureSocial docs (要为 SecureSocial 生成 API 文档,请从他们的 Github中提取,进入他们的“module-code”目录,然后运行play doc
。然后查看 module-code/target/api 文件夹并打开上 index.html)
是)我有的
User
在案例类中获取此参数:
oAuth1Info: Option[securesocial.core.OAuth1Info]
Scaladoc 中 OAuth1Info 的新实例构造函数如下所示:
new OAuth1Info(token: String, secret: String)
现在在我的*
方法中(如此处所述):
def * = stuffs ~ oAuth1InfoToken ~ oAuth1InfoToken ~ moreStuff <>
( // the following is the apply method
{ t => User(stuffs,
Some(OAuth1Info( (t._9).getOrElse(""), (t._10).getOrElse("")) ),
moreStuffs)
}, // the following is the unapply method
{
(r: User) => Some( (r.stuffs,
(r.oAuth1Info).getOrElse(None).token , // ERROR
(r.oAuth1Info).getOrElse(None).secret , // ERROR
r.moreStuffs) )
}
我正在尝试做的事情
如果未提供,则插入None
数据库,并且oAuth1Info
Option[securesocial.core.OAuth1Info] = None
否则,获取OAuth1Info
对象并获取令牌和机密并将其存储到我的数据库中各自的列中。
除了这个映射投影是 500+ 字符行之外,我是否需要做一些
oAuth1Info match {
case None: None
case _: oAuth1Info.token
}
? 单行模式匹配器可以吗?在这一点上,我迷失在我的代码中......
谢谢你的帮助
如果你想看看我到目前为止的完整实现......
Scala + Slick + SecureSocial = 可悲的是 tl;dr 代码
我知道这段代码是一堵文字墙。如果存在多行 Scala 代码会很棒吗?巴斯宾