mongoDB
MonadBaseControl IO
のインスタンスである任意のモナドで機能するのに十分な汎用性があります およびMonadIO
。
たとえば、IO
を選択できます モナド。この場合、liftIO . runQuery
スコッティの行動の内部:
import Web.Scotty
import Database.MongoDB
import qualified Data.Text.Lazy as T
import Control.Monad.IO.Class
runQuery :: Pipe -> Query -> IO [Document]
runQuery pipe query = access pipe master "nutrition" (find query >>= rest)
main = do
pipe <- connect $ host "127.0.0.1"
scotty 3000 $ do
get "/" $ do
res <- liftIO $ runQuery pipe (select [] "stock_foods")
text $ T.pack $ show res
@SebastianPhilipp
の後 追加
MonadBaseControl
Scotty.ActionT
のインスタンス 、何も持ち上げる必要はありません。 mongoDBformscottyを透過的に操作できます。型署名を変更してliftIO
をドロップするだけです s:
runQuery :: Pipe -> Query -> ActionM [Document]
...
get "/" $ do
res <- runQuery pipe (select [] "stock_foods")
text $ T.pack $ show res