使用Conduits从rawQuery中获取数据

Eco*_*ium 3 haskell yesod conduit

我承认,鉴于我有限的Haskell知识,我并不太了解Conduits.所以,如果有人可以指导我如何完成这项任务,那就表示赞赏:我想获取rawQuery动作的输出并将其存储在一个变量中,然后我可以在我的Hamlet文件中再次使用它.例如:

let sql = "SELECT sum(value) as total, category FROM person GROUP BY category ORDER BY total desc;"
   --- ??  how to store this runDB output in a variable?
runDB $ rawQuery sql [] $$ CL.map (convertFromPersistent) 
where 
    convertFromPersistent [] = Nothing
    convertFromPersistent [PersistInt64 sum,PersistInt64 category] = Just (sum,category)
    convertFromPersistent _ = Nothing
Run Code Online (Sandbox Code Playgroud)

当我做

runDB $ rawQuery sql [] $$ CL.mapM_ (liftIO. print. convertFromPersistent) 
Run Code Online (Sandbox Code Playgroud)

我在日志文件中看到了输出.但是,我想将输出传递给元组数组,以便我可以在我的Hamlet文件中使用它.感谢您的帮助!

谢谢,

Eco*_*ium 5

通过反复试验,我发现这有效:

res <- runDB $ rawQuery sql [] $$ CL.map (convertFromPersistent) =$ CL.consume
Run Code Online (Sandbox Code Playgroud)