2011-11-21 82 views
1

我正在嘗試編寫一個Yesod應用程序作爲在後端使用MongoDB的Ruby JSON服務的替代品,並且我遇到了一些問題。映射到舊版MongoDB商店

  1. 模型文件中的sql = foobar語法似乎不太影響Persistent.MongoDB使用的集合。我該如何改變它?
  2. 有沒有一種方法可以輕鬆配置mongodb(最好通過yaml文件)只能顯式讀取?如果知道應用程序無法覆蓋或破壞生產數據,我會採取更多的安慰措施。
  3. 有沒有什麼辦法可以讓Persistent.MongoDB忽略它不知道的字段?該服務僅需要相關集合中的一小部分字段。爲了保持代碼儘可能簡單,我真的想要映射到我關心的字段,並讓Yesod忽略其他所有內容。相反,它抱怨這些字段不匹配。
  4. 如何去定義模型的實例,如ToJSON。我想自定義JSON如何被渲染,但我得到以下錯誤:

Handler/ProductStat.hs:8:10: Illegal instance declaration for ToJSON Product' (All instance types must be of the form (T t1 ... tn) where T is not a synonym. Use -XTypeSynonymInstances if you want to disable this.) In the instance declaration for ToJSON Product'

回答

1

1)似乎SQL =不掛接到蒙戈。由於sql已經這樣做了,Mongo應該不會很難。

2)你可以在persistent/persistent-mongoDB/Database/Persist中更改運行查詢 的函數,這裏有一個PersistConfig的runPool函數。這被用於yesod-defaults。我們可能應該更改loadConfig函數來檢查readOnly設置

3)我可以改變reorder函數以允許忽略,儘管將來(如果MongoDB返回ordeR中的所有內容)可能會影響性能,所以理想情況下,您會列出被忽略的列。

4)這不應該要求更改持續。你嘗試打開TypeSynonymInstances?

我有幾個其他Yesod /持久優先考慮在這些變化之前,請捲起袖子,讓我知道你需要什麼幫助他們。如果您承諾要測試它們,我很快就可以更換自己的產品。

+0

1似乎很孤立,所以也許我可以做到這一點。我很樂意幫忙,但我擔心我可能沒有多大用處。這是我的第一個Yesod應用程序,我完全不熟悉Yesod的代碼庫,我仍然在學習Haskell。 我會在#4上嘗試一下你的建議。我也可以幫助測試。如果我們能夠找到一種更具傳導性的媒體(IRC /電子郵件),我會很樂意以任何方式提供幫助。 – Technocrat

+0

您可以爲1-3創建github問題。我經常在#yesod IRC頻道上作爲gweber –

+0

2&3現在完成 –

相關問題