使用持久键列表选择 (Yesod)
Posted
技术标签:
【中文标题】使用持久键列表选择 (Yesod)【英文标题】:Select with list of keys Persistent (Yesod) 【发布时间】:2014-05-30 16:17:46 【问题描述】:我需要使用 Persistent (Yesod) 从键列表中获取实体列表
假设我有一个Model
及其对应的ModelId
。我有:
keys :: [ModelId]
我需要得到
models :: [Model]
目前最好的做法似乎是:
models' <- mapM get keys
models <- return $ Data.Maybe.catMaybes models'
有没有更有效的方法来做到这一点?持久化是否将获取请求排队或一一执行?
yesod persistent: get list of entities from list of keys 也有同样的问题,但我想知道这是否是最有效的方法。
【问题讨论】:
我不知道 yesod 是如何执行请求的,但是您可以将此命令简化为models <- fmap catMaybes $ mapM get keys
,这样您就没有中间的 models'
变量。
【参考方案1】:
如果我很好地理解了你的问题,你可以通过尝试这样的方式来实现它:
models' <- selectList [ModelId <-. keys] []
通过使用mapM
,您将查询数据库length keys
次,而selectList
执行单个查询。
【讨论】:
啊。谢谢。不知道我可以使用 ModelId 来选择模型。以上是关于使用持久键列表选择 (Yesod)的主要内容,如果未能解决你的问题,请参考以下文章