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

use*_*146 2 haskell persistent yesod

假设我有fooIds :: [Key Foo].我怎么会得到foos :: [Foo]

我试过了

do
    foos <- map get fooIds
Run Code Online (Sandbox Code Playgroud)

但它给了我

No instance for (MonadBaseControl IO m0)
  arising from a use of `get'
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*man 5

它看起来像这样:

foos <- runDB $ mapM get fooIds
Run Code Online (Sandbox Code Playgroud)

但是,这会给你一个Maybe Foos 列表.你可以把它转换成列表Foo由要么更换小号getget404或使用catMaybes.请注意,这是两种不同的方法:第一种,如果不存在任何ID,则用户将获得404.使用第二种方法,该键将被忽略.