【发布时间】:2012-03-12 09:27:02
【问题描述】:
说,在 Yesod/Persistent 中,我有这样的模型设置:
User
ident Text
password Text Maybe
UniqueUser ident
Question
title Text
asker UserId Eq
我有一个Questions 的列表,并且想检索Users 的相应列表。我该怎么做呢?
我考虑过加入,但这些是一对多的,而不是一对一的(我想没关系,但我想要一个更简单的解决方案)。手动加入也是一种选择,但我担心性能 - 我有
questions <- runDB $ selectList [QuestionTitle !=. ""] [LimitTo 10]
let askerIds = map (\(Entity _ q) -> questionAsker q) questions
askers <- sequence $ map (runDB . get) askerIds
let questionsAndAskers = zip questions askers
但我担心在map 中使用runDB(它不会为每个用户向数据库发出单独的请求吗?)
有没有更好/更惯用的方法来实现这一点?
【问题讨论】:
-
是的,我认为可以公平地假设每次您点击
runDB,都会执行另一个数据库查询。