sql >> Database >  >> NoSQL >> MongoDB

Scotty gebruikt MongoDB

mongoDB is generiek genoeg om te werken in elke monad die een instantie is van MonadBaseControl IO en MonadIO .

U kunt bijvoorbeeld IO . kiezen monade. In dit geval heeft u liftIO . runQuery binnen Scotty's actie:

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

Na @Sebastian Philipp toegevoegd MonadBaseControl instantie voor Scotty.ActionT , het is niet nodig om iets op te tillen. U kunt transparant werken met mongoDB van scotty. Verander gewoon de typehandtekening en laat liftIO vallen s:

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



  1. Java converteert bytes naar binaire veilige string

  2. Redis-replicatie gebruiken op verschillende machines (multimaster)

  3. Ruimtelijke gegevens met mongodb of cassandra

  4. Hoe Java Spark sparksessie-samplesize te configureren