[英]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.