yesod persistent:从密钥列表中获取实体列表

时间:2013-02-10 01:52:30

标签: haskell persistent yesod

假设我有fooIds :: [Key Foo]。我如何获得foos :: [Foo]

我试过

do
    foos <- map get fooIds

但它给了我

No instance for (MonadBaseControl IO m0)
  arising from a use of `get'

我假设因为我需要使用runDB。但我不太确定如何使用它。

2 个答案:

答案 0 :(得分:5)

它看起来像这样:

foos <- runDB $ mapM get fooIds

但是,这将为您提供Maybe Foo的列表。您可以将Foo替换为get或使用get404将其转换为catMaybes列表。请注意,这是两种不同的方法:第一种方法,如果不存在任何ID,用户将获得404.使用第二种方法,该密钥将被忽略。

答案 1 :(得分:0)

另一种有用的方法是

foos <- runDB $ mapM getJustEntity fooIds