Yesod - 也许EntityId to Maybe Entity

时间:2016-03-25 18:42:56

标签: haskell yesod

首先,我是一个Haskell noob,所以如果有明显的事情,我会抱歉。

说我有类似的东西:

Object1
    stuff Text
    other Object2Id Maybe

Object2
    otherStuff Text

在我的配置/模型文件中

如果我有一个类型为

的处理程序,如何获取与Object1关联的Object2
getObject1R :: Object1Id -> Handler Html

如果我理解正确,我希望从Maybe Object2Id转到Maybe Object,并在中间调用runDB $ get,并且我已经尝试了所有类型的“{1}}”。排队正确。

由于

修改

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

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)

我确信有更好/更快/更简单的方法,但这很有效。

1 个答案:

答案 0 :(得分:1)

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

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

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

我确信有更好/更快/更简单的方法,但这很有效。