在我的CouchDB數據庫中,我希望所有文檔在更改(並強制執行)時添加「updated_at」時間戳。CouchDB:自動更新字段
- 我不能
validation
功能 修改文檔
updates
功能將無法運行,除非他們明確要求(所以它會是可能的更新文件,而不是調用特定的更新功能)
我應該如何去實施呢?
在我的CouchDB數據庫中,我希望所有文檔在更改(並強制執行)時添加「updated_at」時間戳。CouchDB:自動更新字段
validation
功能updates
功能將無法運行,除非他們明確要求(所以它會是可能的更新文件,而不是調用特定的更新功能)我應該如何去實施呢?
沒有觸發_update
處理程序,現在沒有辦法做到這一點。這是跟蹤文檔更改時間的好主意,但它面臨複製問題。
複製正在對公共API的頂部,這意味着:
我可以建議一個解決辦法 - 你可以創建一個發出當前日期作爲一個關鍵的一個視圖(或它的一部分):
function(doc){
emit(new Date, null);
}
這將分配當前日期的所有文件作爲一旦視圖生成被觸發(發生在第一次請求之後),並將在每次更新特定文檔時重新分配新日期。
儘管上述內容可以解決您的問題,但由於Kxepal已解釋的原因,我建議不要使用它:如果您位於複製網絡中,則每個節點將分配自己的日期。因此,考慮到這一點,我可以推薦的最好方法是在客戶端解決問題,並只在發佈日期已經嵌入的文檔中發佈。
這是一個恥辱,沒有辦法獲得複製保存數據作爲免除自動更新的用戶,因爲這將解決複製問題。但仍然需要有一個couchdb工具來更新更新字段。它很骯髒,但我認爲我會對交付的更新進行驗證,以便拒絕,除非現在(只要用戶不是複製用戶)交付的'updated_at'時間在<可接受的時鐘差>範圍內。這很醜陋,但它會完成工作! – 2013-04-26 08:35:45
請隨時[開放問題](https://issues.apache.org/jira/browse/COUCHDB)關於(: – Kxepal 2013-04-26 09:56:34