如何从Include'类型的Post中提取实体以避免重复查询数据库?
解决方法
通过模式匹配提取原始Post实体
直接解构Include'类型的构造器,就能拿到内部的Post实体,不需要再次查询数据库:let (Include' post _) = post post |> set #title "Foo" |> updateRecord这里
Include'的第一个参数就是你需要的Post实体,第二个是关联的comments数据,直接拆出来使用即可。使用框架提供的提取函数
如果你的ORM(比如Yesod Persistent)提供了专门的提取函数(例如unInclude),可以直接用它剥离包装层:post |> unInclude |> set #title "Foo" |> updateRecord这个函数会直接返回
Include'内部的Post实体,完全不需要额外的数据库操作。
内容的提问来源于stack exchange,提问作者amitaibu
相关产品推荐
相关产品推荐

