yesod如何显示PersistInt64键的纯值

BAR*_*ARJ 5 haskell key persist yesod

Dog
    name Text
    race Text

getAllDogsR :: Handler Html
getAllDogsR = do
    Dogs<- runDB $ selectList [] [Asc DogName]
    defaultLayout
        [whamlet|
            <ul>
                $forall Entity dogid dog <- Dogs
                    <li>
                        #{show $ unKey (dogid)}
       |]
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我将获得我的数据库中所有狗键的列表,
如下所示:

  • PersistInt64 1
  • PersistInt64 2
  • PersistInt64 3
  • PersistInt64 4
  • 等等

但我真正想要的是显示密钥的纯值,
如下所示:

  • 1
  • 2
  • 3
  • 4
  • 等等

我的问题是如何实现这一目标.

Sam*_* S. 2

您需要首先从 a 中提取密钥KeyBackend,如下所示:

extractKey :: KeyBackend backend entity -> String
extractKey = extractKey' . unKey
  where extractKey' (PersistInt64 k) = show k
        extractKey' _ = ""
Run Code Online (Sandbox Code Playgroud)

你现在应该能够做到

#{extractKey dogid}
Run Code Online (Sandbox Code Playgroud)