【问题标题】:Yesod Persist create String key from JSONYesod Persist 从 JSON 创建字符串键
【发布时间】:2018-01-17 20:19:08
【问题描述】:

我有两个非常简单的模型定义:

Page json
  uuid Text
  title Text
  UniquePageUuid uuid
  Primary uuid

Link
  uuid Text
  href Text
  pageId PageId Maybe
  Primary uuid

我想构建一个 JSON 端点来更新 Link 模型中的 pageId:

data ApiLink { linkPageId :: PageId } deriving (Generic)

instance FromJSON ApiLink

我的处理程序看起来像这样:

patchApiLinkR :: LinkId -> Handler Value
patchApiLinkR linkId = do
  jsonData <- requireJsonBody :: Handler ApiLink
  link <- runDB $ update linkId [LinkPageId =. (linkPageId jsonData)]
  returnJson link

不幸的是,我不知道如何进行这项工作,因为 ApiLink 中的 linkPageId 具有 PageId 的类型。我已经看到了一些为 Int64 创建 DB Keys 的代码,但我不知道如何从 Text 值创建它们。

非常感谢!

【问题讨论】:

    标签: haskell yesod persist


    【解决方案1】:

    你必须稍微改变你的数据库查询,如下所示:

    link <- runDB $ update linkId [LinkPageId =. (Just $ linkPageId jsonData)]
    

    【讨论】:

    • @Alebon 别担心,每个人都会遇到!
    猜你喜欢
    • 2018-03-07
    • 2014-03-27
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多