Я относительно новичок в Haskell, и я впервые работаю с преобразователями монад. Я был бы очень признателен за помощь.
runQuery :: Pipe -> Query -> ActionM (Either Failure [Document])
runQuery pipe query = access pipe master "nutrition" (find query >>= rest)
main = do
pipe <- runIOE $ connect $ host "127.0.0.1"
scotty 3000 $ do
post "/" $ do
b <- body
let user :: Either String User = eitherDecode b
case user of
Left err -> text . pack $ "Could not decode the user:" ++ err ++ ":\n" ++ (show b)
Right u -> do
let query::Query = (select ["i_name" =: ["$in" =: map (unpack . name) (foods u)]] "stock_foods")
results <- runQuery pipe query
...
Я пытаюсь запросить базу данных mongodb
в рамках веб-фреймворка scotty
, но получаю сообщение об ошибке MonadBaseControl
. Мне действительно нужно создать экземпляр этого, чтобы подключиться к базе данных с помощью scotty
, и как мне это сделать?
No instance for (MonadBaseControl
IO (scotty-0.7.2:Web.Scotty.Types.ActionT Text IO))
arising from a use of `find'
Possible fix:
add an instance declaration for
(MonadBaseControl
IO (scotty-0.7.2:Web.Scotty.Types.ActionT Text IO))
lift
в своемrunQuery
, но не можете это проверить. - person shang   schedule 08.05.2014lift
выполнить функцию runQuery и изменить ее тип возвращаемого значения сActionM (Either ...)
наIO (Either ...)
. Я думаю, что теперь я смогу добиться большего прогресса с трансформерами монад! - person Craig   schedule 08.05.2014liftIO
вместо несколькихlift
... там еще много уборки для меня, поэтому, пожалуйста, не думайте, что код, который я разместил, разумен: я просто публикую его для интереса ). - person stusmith   schedule 08.05.2014find
: hackage.haskell.org/package/mongoDB-1.4.4/docs/ - person Craig   schedule 09.05.2014