У меня есть обработчик yesod, который может принимать json с массивом объектов. Я хотел бы вставить все объекты в базу данных.
newtype NodeList = NodeList [Node]
instance FromJSON NodeList where
parseJSON (Object o) = NodeList <$> o .: "nodes"
parseJSON _ = mzero
postMoreNodesR :: Handler ()
postMoreNodesR = do
nodes::NodeList <- requireJsonBody
runDB $ mapM_ insert nodes
return ()
Но каким-то образом он не распознает мой тип сущности. (хотя другие обработчики POST и GET в том же модуле работают отлично.) Я могу сказать, что я довольно близок, но я не уверен, что делать, поскольку «a0» не является типом, который я где-либо объявлял. Вот ошибка:
Handler/Node.hs:46:30:
Couldn't match expected type `[a0]' with actual type `NodeList'
In the second argument of `mapM_', namely `nodes'
In the second argument of `($)', namely `mapM_ insert nodes'
In a stmt of a 'do' block: runDB $ mapM_ insert nodes