我收到一個我無法解決的錯誤。 快照應用程序編譯沒有問題,一切似乎都沒問題。 但是,當我在瀏覽器中呈現相關頁面時,出現此錯誤:Haskell Snap:mongodb字段類型錯誤
Web處理程序引發異常。詳細信息: 預期( 「代碼」 ::整數)[_id:50b56f19208c2e9a09dccc2b,ID:1.0,代號: 「hdg435」,名稱: 「小青蛙」]
的碼值僅僅是我挑一個用於測試的rendom串。我不確定爲什麼會有整數?
這些是示例快照應用程序的相關部分。
getData :: IO [Document]
getData = do
pipe <- runIOE $ connect $ host "127.0.0.1"
let run act = access pipe master "test" act
result <- run (find (select [] "pcs") >>= rest)
close pipe
return $ either (const []) id result
mkSplice :: Document -> Splice AppHandler
mkSplice d = runChildrenWithText [dtp "id" d
,dtp "code" d
,dtp "name" d
]
dtp :: Text -> Document -> (Text,Text)
dtp tag d = (tag, T.pack $ show $ at tag d)
recSplice :: Splice AppHandler
recSplice = mapSplices mkSplice =<< liftIO getData
table :: Handler App App()
table = heistLocal (bindSplice "rec" recSplice) $ render "table"
table.tpl的有關斯特模板的一部分是在這裏:
<table>
<tbody>
<rec>
<tr><td><id/></td><td><code/></td><td><name/></td></tr>
</rec>
</tbody>
</table>
請讓我知道代碼的其他部分需要發佈的東西。
我這裏看不到任何會迫使該場整數。問題必須在其他地方。也許實際上正在執行的代碼不符合你的期望?也許你可以嘗試將代碼字段改爲int並查看會發生什麼。另外,我的記憶是,mongo大多是無模式的,但是在mongo中是否會有任何需要整數的東西? – mightybyte
@mightybyte,謝謝。我以爲我在做一些愚蠢的事情。這真的很奇怪,我不明白爲什麼。我改變了記錄,所以它只包含沒有任何數字的字符串:[_id:50b6e74852a4923015a9f225,id:「a」,代碼:「hfgarqe」,名稱:「froggy」]然而,它抱怨期望的整數。我現在正在研究我的頭髮。處理上面的記錄我得到這個錯誤:一個Web處理程序拋出一個異常。詳細信息:[_id:50b6e74852a4923015a9f225,id:「a」,代碼:「hfgarqe」,名稱:「froggy」]中的expected(「id」:: Integer)也許我應該明確地將mongo值轉換爲haskell值... –