CouchDB的權威指南(here)在讀這一段後:CouchDB設計文檔中的多個validate_doc_update函數。任何良好做法?
如果你有多個設計文件,每一個validate_doc_update功能,所有這些功能都在每個到來的寫請求調用。只有他們全部通過,寫入纔會成功。驗證執行的順序未定義。每個驗證功能必須自行執行。
我想知道是否有任何好的做法來處理多個validate_doc_update函數?
我的意思是:用validate_doc_update字段創建一個設計文檔還是有幾個較小的設計文檔會更好嗎?
在第一種情況下,可以確定沒有一個驗證函數會干擾另一個驗證函數,但是如果需要很多控件,函數可能會變得非常大。另一方面,一些較小的函數可能更易於閱讀和演變,但必須確定每個函數的目的,而不是混淆其他函數。
另外,讓每個設計文檔擁有驗證功能有什麼意義?例如,在視圖文件中存儲一個看起來有點髒,但創建幾個設計文檔僅僅是爲了保存一個小的驗證函數,對我來說也不是很聰明。
您認爲如何?
我可能錯過了一些東西,這是我的問題的重點,是否有關於多個validate_doc_update函數管理的良好實踐?
+1。我想知道如果「設計文檔」從一開始就被稱爲「應用程序」會有多不同。也許「應用程序」不是一個好詞,但對於大多數用戶來說,「設計文檔」並不意味着什麼。 (雖然我正在改變歷史,但我只是打電話給文件「記錄」。) – JasonSmith 2011-03-26 07:49:53
我同意@jhs的「設計文件」可能會讓人困惑,特別是在開始時。本來可以做的是創建設計文檔的不同「類型」,專用於某些東西,例如類型「auth」,其中必須包含「validate_doc_update」字段並禁止其他類似「views」的類型和包含字段的類型「view」 「views」和no「validate_doc_update」。實際上,這可以通過驗證功能來完成,但內置的東西可以更容易地組織我認爲的所有這些。不這樣做的好處是讓用戶按照自己的意願管理其文檔? – Arnaud 2011-03-27 12:11:08
是的,CouchDB很放鬆。如果你想執行你自己的政策,你可以也應該!不過,我通常從一個大設計文件開始做所有事情,然後如果有一個非常明顯的原因,我會分裂成更多。例如,我使用了 Erlang來實現過濾功能,因爲它們更快。 – JasonSmith 2011-03-27 12:27:10