我很新的CouchDB的,我想知道我怎麼可以創建ID的那個樣子。如何在couchdb文檔中生成部分唯一且順序的字段?
Employee:DBX-**0001**-SP
數部必須是唯一的和順序的。我如何在couchdb中實現這樣的功能?我搜索了所有,我找不到任何簡單的解決方案。
這將是最好的,如果我可以生成在CouchDB中在客戶機側的連續部分,而不是避免複製過程中的碰撞。
我現在的解決方案是我檢索存儲的文檔,看起來像這樣{「_id」:「EmployeeAutoIncrement」,value:1}檢索時,我遞增值並將其發送回服務器if這些都是成功的話,我返回新增加值,並把它作爲我的自動遞增值是ID員工的一部分:DBX- AUTO_INCREMENT_VALUE_HERE -SP
這樣做的問題是,如果兩個人做出的請求EmployeeAutoIncrement在同一時間,他們都更新它會不會導致衝突?另外,如果一個人提出請求而他們離線,他們又回到網上,那麼這不會導致衝突嗎?
如果我是你,我會嘗試通過'JSON.stringify(new Date())'作爲自動增量使用UTC日期。這是獨特的,連續的,作爲獎勵存儲創建的日期。我不確定在服務器端如何做到這一點,所以可能會有多個客戶端試圖在同一毫秒內創建文檔的問題。如果由於已經存在_id而導致失敗,那麼您可以重試一次,這應該解釋大多數情況。 –
對不起,但我不明白如何從中得到序列號。它應該是像0001 0002 0003 0004 0005這樣的順序。請詳細說明JSON.stringify(new Date())會給我帶來怎樣的結果0001 0002 ... –
它不會給你一個沒有間隙的序列,但它很容易被排序按照升序排列,如果這就是你所需要的 –