如何回应Yesod中Key的值?

时间:2015-04-02 03:47:16

标签: haskell yesod haskell-persistent

我在Yesod中为资源编写REST API。我有一个POST方法应该尝试创建给定的资源,如果成功返回201和新创建的资源的ID。如,

postResourceR :: Handler String
postResourceR = do
  id <- runDB $ insert Resource
  sendResponseStatus status201 id -- DOES NOT COMPILE

这是我得到的错误,这很明显:

No instance for (ToTypedContent (Key Resource))
  arising from use of 'sendResponseStatus'

我知道我需要ToTypedContent的某些内容,但我找不到任何方法可以从Database.Persist.Class中的Key获取该内容。任何帮助将不胜感激。

编辑:

以下是实际资源的定义:

Notification
    title Text
    content Text
    icon Text Maybe
    action Text Maybe 
    created UTCTime
    updated UTCTime
    deriving Show

1 个答案:

答案 0 :(得分:5)

假设您正在使用SQL后端,则可以使用fromSqlKey。更一般地说,您可以使用toBackendKey