1
我想讓我的MongoDB在Haskell中工作。我以this tutorial爲起點。當我在前奏執行這些命令,我得到收藏的列表:前奏和yesod與MongoDB的區別
pipe <- runIOE $ connect $ Host "XXXXX.mongolab.com" $ PortNumber 33317
access pipe master <databaseName> $ auth <username> <password>
access pipe master <databaseName> allCollections
然而,當我試圖把在耶索德處理程序,它不是編譯。我有
getActivityR :: Handler Import.Value
getActivityR = do
pipe <- runIOE $ connect $ Host "XXXXX.mongolab.com" $ PortNumber 33317
access pipe master <databaseName> $ auth <username> <password>
access pipe master <databaseName> allCollections
returnJson $ object ["activity" .= ("abc" :: Text)]
returnJson真的只是在那裏讓我知道我完成了該方法。最終它會返回活動列表。
我得到的錯誤是:
Couldn't match type `IO' with `HandlerT App IO'
Expected type: HandlerT App IO Pipe
Actual type: IO Pipe
In a stmt of a 'do' block:
pipe <- runIOE
$ connect $ Host "XXXXXX.mongolab.com" $ PortNumber 33317
那麼,什麼是前奏/ GHCI和我耶索德碼之差被驚天動地建的?
我對Yesod知之甚少,但GHCi在'IO' monad中運行此命令,而您的Yesod代碼顯然是在'HandlerT App IO' monad中運行的。試試'pipe < - liftIO $ runIOE $ ...' – Fixnum
我認爲@ Fixnum的評論其實就是答案。 –
@Fixnum這似乎解決了構建錯誤。謝謝。如果你將它作爲答案輸入,我會接受它並讓你有一些觀點:) – taylonr