处理程序中实体列表的映射函数
Map function on a list of entities in handler
我有一个 ,它在服务之前将一些数据添加到 Entity
的 Json。
现在我想将相同的函数应用于我在执行操作时获得的实体列表:
getEventsR :: Handler Value
getEventsR = do
events <- runDB $ selectList [] [] :: Handler [Entity Event]
return $ object ["data" .= events]
如何将具有此类签名的函数应用到 events
:
addMetaData :: EventId
-> Event
-> HandlerT App IO (Maybe Value)
addMetaData eid event = do
利用 Traversable
实例。
getEventsR :: Handler Value
getEventsR = do
events <- runDB $ selectList [] [] :: Handler [Entity Event]
maybeValues <- sequenceA [addMetaData eid event | Entity eid event <- events]
return ...
两者都
sequenceA :: (Traversable t, Applicative app) => t (app a) -> app (t a)
sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)
这里应该有用。 (在本例中 t ~ []
和 app ~ HandlerT App IO
。)
我有一个 Entity
的 Json。
现在我想将相同的函数应用于我在执行操作时获得的实体列表:
getEventsR :: Handler Value
getEventsR = do
events <- runDB $ selectList [] [] :: Handler [Entity Event]
return $ object ["data" .= events]
如何将具有此类签名的函数应用到 events
:
addMetaData :: EventId
-> Event
-> HandlerT App IO (Maybe Value)
addMetaData eid event = do
利用 Traversable
实例。
getEventsR :: Handler Value
getEventsR = do
events <- runDB $ selectList [] [] :: Handler [Entity Event]
maybeValues <- sequenceA [addMetaData eid event | Entity eid event <- events]
return ...
两者都
sequenceA :: (Traversable t, Applicative app) => t (app a) -> app (t a)
sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)
这里应该有用。 (在本例中 t ~ []
和 app ~ HandlerT App IO
。)