Я пытаюсь запросить экземпляр MongoDB, чтобы вернуть точку. В принципе, местозаполнитель сейчас, просто базовый тип данных, поскольку я пытаюсь изучить Йесод. Ниже мой маршрут для обработчика. Как запросить базу данных по id (или некоторому другому фильтру) и вернуть информацию как JSON?Yesod Mongo DB и JSON
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE DeriveGeneric #-}
module Handler.Points where
import Import
mkPersist sqlSettings [persistLowerCase|
Point
name String
deriving Show
|]
$(deriveToJSON defaultOptions ''PointGeneric)
getPointsR :: String -> Handler Value
getPointsR pId = do
pts <- runDB $ selectList [PointName ==. pId] []
returnJson (pts :: [Entity Point])
И вот сообщение об ошибке, которое я получаю.
Handler\Points.hs:25:20:
Couldn't match type `Database.Persist.MongoDB.MongoBackend'
with `persistent-1.2.3.0:Database.Persist.Sql.Types.SqlBackend'
In the second argument of `($)', namely
`selectList [PointName ==. pId] []'
In a stmt of a 'do' block:
pts <- runDB $ selectList [PointName ==. pId] []
In the expression:
do { pts <- runDB $ selectList [PointName ==. pId] [];
returnJson (pts :: [Entity Point]) }
Build failure, pausing...
Спасибо, я внесла ваши изменения (и еще несколько на основе сообщений об ошибках, которые я получил) и обновил вопрос. Теперь это больше похоже на странную постоянную проблему с Монго. – mdietz