Yesod - 获取实体价值的功能

Fth*_*der 1 haskell yesod

看一看:

myEntity :: Entity Post
myEntity = ...

myValue :: Entity Post -> Post
myValue = <someFunction>

myKey :: Entity Post -> PostId
myKey = <someOtherFunction>
Run Code Online (Sandbox Code Playgroud)

someFunctionsomeOtherFunction存在于yesod还是我需要创建它们?

jos*_*uan 5

你有Entity key val,然后val

> :t entityVal
entityVal :: Entity record -> record
> :i entityVal
type role Entity nominal
data Entity record where
  Entity :: PersistEntity record =>
            (Key record) -> record -> Entity record
        -- Defined in ‘persistent-2.2.1:Database.Persist.Class.PersistEntity’
Run Code Online (Sandbox Code Playgroud)

或者 key

> :t entityKey
entityKey :: Entity record -> Key record
> :i entityKey
type role Entity nominal
data Entity record where
  Entity :: PersistEntity record =>
            (Key record) -> record -> Entity record
        -- Defined in ‘persistent-2.2.1:Database.Persist.Class.PersistEntity’
Run Code Online (Sandbox Code Playgroud)

或两者都可以使用模式匹配,例如

> let getR (Entity k v) = (k , v)
> :t getR
getR :: Entity t -> (Key t, t)
Run Code Online (Sandbox Code Playgroud)