sql >> Databáze >  >> NoSQL >> MongoDB

Scotty pomocí MongoDB

mongoDB je dostatečně obecný, aby fungoval v jakékoli monadě, která je instancí MonadBaseControl IO a MonadIO .

Můžete například zvolit IO monáda. V tomto případě potřebujete liftIO . runQuery uvnitř Scottyho akce:

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

Po @Sebastian Philipp přidáno MonadBaseControl instance pro Scotty.ActionT , není třeba nic zvedat. Můžete transparentně pracovat s mongoDB formulářem scotty. Stačí změnit typ podpisu a pustit liftIO s:

runQuery :: Pipe -> Query -> ActionM [Document]
...
    get "/" $ do
      res <- runQuery pipe (select [] "stock_foods")
      text $ T.pack $ show res



  1. Zastavit sadu replik MongoDB

  2. mongodb aplikujte řazení na výsledky vyhledávání

  3. mongoose:middleware pre deleteJedna možnost nefunguje

  4. mongoose uložit vs vložit vs vytvořit