Yesod - 可能是 EntityId 到可能是实体

Yesod - Maybe EntityId to Maybe Entity

首先我是一个 Haskell 菜鸟,所以如果有明显的错误,我很抱歉。

假设我有类似的东西:

Object1
    stuff Text
    other Object2Id Maybe

Object2
    otherStuff Text

在我的 config/models 文件中

如果我有以下类型的处理程序,如何将 Object2 关联到 Object1:

getObject1R :: Object1Id -> Handler Html

如果我理解正确的话,我想从 Maybe Object2IdMaybe Object 并在中间调用 runDB $ get 并且我尝试过的所有类型都不行正常起来。

谢谢

编辑

这是我认为接近但不正确的一种尝试:

object1 <- runDB $ get object1Id
maybeObj2 <- case (object1Other object1) of
    Just obj2Id -> Just $ runDB $ get obj2Id
    Nothing -> Nothing

编辑 2(弄明白了)

所以我想出了如何让它编译和工作!感谢您的评论和帮助。

这是我的代码(在处理程序中):

(object1, maybeObject2) <- runDB $ do
    object1 <- get404 object1Id
    maybeObject2 <- case (object1Other object1) of
      Just object2Id -> get object2Id
      Nothing -> return Nothing
    return (object1,maybeObject2)

我确定有 better/faster/easier 种方法可以做到这一点,但这行得通。

所以我想出了如何让它编译和工作!感谢您的评论和帮助。

这是我的代码(在处理程序中):

(object1, maybeObject2) <- runDB $ do
    object1 <- get404 object1Id
    maybeObject2 <- case (object1Other object1) of
      Just object2Id -> get object2Id
      Nothing -> return Nothing
    return (object1,maybeObject2)

我确定有 better/faster/easier 种方法可以做到,但这行得通。