MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Scotty korzysta z MongoDB

mongoDB jest wystarczająco ogólny, aby działać w każdej monadzie, która jest instancją MonadBaseControl IO i MonadIO .

Na przykład możesz wybrać IO monada. W tym przypadku potrzebujesz liftIO . runQuery wewnątrz akcji Scotty'ego:

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 dodane MonadBaseControl przykład dla Scotty.ActionT , nie trzeba niczego podnosić. Możesz w przejrzysty sposób pracować z mongoDB form Scotty. Po prostu zmień podpis typu i upuść liftIO s:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. dlaczego otrzymuję favicon.ico, gdy używam metody findOne dla tras ekspresowych params?

  2. MongoDB - operator $text wyszukuje wyrażenie LUB słowo(a)

  3. Mongodb nie może się uruchomić w Ubuntu 15.04

  4. Problem z wydajnością MongoDB:pojedyncza duża kolekcja a wiele małych kolekcji

  5. Wiele baz danych (mongodb[mongoengine] i sql ) z django 1.8