2013-12-08 78 views
1

我想了解什麼是正確的typeclass約束,用於想要將代碼放入持久性Yesod中的數據庫的函數。爲了使事情具體,我有一個功能,如:Yesod的Typeclass約束持久代碼

addToDbReturnJson obj = do 
    runDB $ insert obj 
    returnJson obj 

我試圖找出它的類型簽名應該是什麼。我敢肯定這應該是這樣的

addToDBReturnJson ::(VAL的toJSON,SomethingPersist VAL)=> VAL - >句柄值

應該怎樣SomethingPersist是什麼?我很高興能夠指出解釋Persistent類型的文檔,但我一直無法從Yesod書中找到它。

+0

請不要簽名。編譯器足夠聰明,可以爲你推斷它。 –

+0

在ghci中加載這個文件,調用':t addToDbReturnJson'來查看爲你推薦的編譯器 – Ankur

+0

是的,我目前沒有類型簽名並且它可以工作,但我喜歡試着理解我的代碼類型(加上擺脫的編譯器警告)。我嘗試過ghci,它給了我一個我不能理解的8行東西。 – triplepoint217

回答

1

這適用於我 -

addToDbReturnJson::(ToJSON val, PersistEntity val, 
    (PersistEntityBackend val ~ PersistMonadBackend (YesodDB App)))=>val->Handler Value 

不是很直觀,但在我看來像你必須指定輸入值連接到數據庫是同一個數據庫中的最後一部分,該處理程序使用(....確定,這是有道理的,我猜)。

相關問題