我正试图让我的 MongoDB 在 Haskell 中工作。我以本教程为起点。当我在前奏中执行这些命令时,我会得到一个集合列表:
pipe <- runIOE $ connect $ Host "XXXXX.mongolab.com" $ PortNumber 33317
access pipe master <databaseName> $ auth <username> <password>
access pipe master <databaseName> allCollections
但是,当我尝试将其放入 Yesod Handler 时,它并没有编译。我有
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
那么 Prelude/GHCi 和我的由 Cabal 构建的 Yesod 代码有什么区别?