![](/img/trans.png)
[英]Haskell Esqueleto project subset of columns to list of custom records
[英]Haskell Esqueleto project to list of records instead of tuples
在所有示例中,我都看到esqueleto的结果被投影到元组列表中。 由于缺少标签,这使得编码和维护更加困难。
例如:
previousLogItems <- select $ from $ \li -> do
orderBy [desc (li ^. LogItemId)]
limit 10
return (li ^. LogItemId, li ^. LogItemTitle)
有什么办法让esqueleto将结果投影到记录列表中吗?
实际上,您可以自己构造元组。 确实:
previousLogItems <- select $ from $ \li -> do
orderBy [desc (li ^. LogItemId)]
limit 10
return (li ^. LogItemId, li ^. LogItemTitle)
因此,您可以使用(^.) :: (PersistEntity val, PersistField typ) => expr (Entity val) -> EntityField val typ -> expr (Value typ)
“选择器”来获取字段并将它们包装到一个元组。
如果您这样写:
previousLogItems >- select $ from $ \li -> do
orderBy [desc (li ^. LogItemId)]
limit 10
return li
您将获得[Entity Foo]
的列表,其中Foo
是您查询的对象的类型。
您可以使用entityVal :: Entity a -> a
获得包装在Entity
,例如:
previousLogItems <- select $ from $ \li -> do
orderBy [desc (li ^. LogItemId)]
limit 10
return li
mapM_ (print . entityVal) previousLogItems
给定该实体当然是Show
的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.