【发布时间】:2015-06-06 22:02:28
【问题描述】:
我正在为 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
【问题讨论】:
-
AFAIK
ToTypedContent基本上是ByteString(see the Yesod book/docu) - 很难说你是怎么得到它的,因为我们甚至不知道你的Key的类型跨度> -
抱歉,我认为这无关紧要,因为我没有明确定义它。现在添加了我的资源的定义。
-
具体类型也将取决于您的数据库后端等 - 无论如何您是否看过我链接的 yesod 书?基本上,如果你可以
show,那么show id应该可以工作——尽管我猜你迟早也需要另一个方向 -
我已经阅读了这一章,但我无法将其放在一起。我现在在
ToContent和ToTypedContent的定义中看到了它。谢谢!
标签: haskell yesod haskell-persistent