sql >> Databasteknik >  >> NoSQL >> MongoDB

Scotty använder MongoDB

mongoDB är generisk nog att fungera i vilken monad som helst som är instans av MonadBaseControl IO och MonadIO .

Du kan till exempel välja IO monad. I det här fallet behöver du liftIO . runQuery inuti scottys handling:

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

Efter @Sebastian Philipp tillagd MonadBaseControl instans för Scotty.ActionT , det finns ingen anledning att lyfta något. Du kan öppet arbeta med mongoDB från scotty. Ändra bara typsignatur och släpp liftIO s:

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



  1. mongodb aggregationssort

  2. Hantering av relationer i meteorvinkel

  3. Frågar mongodb från golang med hjälp av _id lagrat i en array

  4. PHP mongo hitta fältet börjar med