據我所知,用couchdb更新任何對象。我必須發回整個對象,因爲它實際上是爲同一個id「插入」一個新的修訂版本。這一切都很整齊,工作得很好。Couchdb概念性問題
但後來我有一個問題,我不是很確定,我應該如何處理。我有一個對象無法完全發送給我的用戶。我必須隱藏某些信息,如密碼哈希。
的數據被髮送到客戶端,修改被髮送過。現在,當我嘗試更新我的對象時,我遇到了一個問題。由於缺少一些數據,更新將刪除我的用戶缺失的屬性。
這麼說,我有最簡單的方法是從CouchDB的獲取對象,檢查ID和rev匹配。如果匹配,則將該對象與缺少的屬性合併。它會工作得很好,我也可以支持刪除屬性。
然後使用這種技術,我可以我的對象添加到高速緩存,這將減少從數據庫中查詢頻繁對象的時間。如果可以更新對象,則清除該標識的緩存。如果對象更新,那麼我將不得不處理錯誤或合併對象。
有沒有更好的「好方法」來處理這個問題?
編輯
在夜間思考之後,我想我找到了很多更好的解決方案。而不是在我的個人資料中輸入我的用戶名和密碼。我將從使用配置文件中分離標識對象。
換句話說,我必須儘可能讓事情變得孤立分割的對象......從積極的一面,我可以爲一個配置文件添加多個認證,而不與型材本身搞亂。我可以返回配置文件和任何必要的東西而不返回任何祕密對象
它將複雜一點插入的邏輯,但它應該是很容易的......
- 使用UUID API「_uuids」
- 插入密碼認證從CouchDB的送一個ID(用戶名,密碼,使用UUID
- 如果成功PROFILE_ID),使用我們在1
瞭如果有什麼錯誤發生,回滾和告訴什麼是錯的用戶的uuid插入輪廓。
此方法的好處是,我可以使用配置文件ID爲oauth2添加access_token,邏輯將與密碼幾乎相同,auth類型將有所不同,但任何auth類型都應該幾乎相同。
我得到它的工作和閱讀,有一個API來獲取的UUID:'服務器/ _uuids'這樣我可以插入我的身份驗證憑有效身份證之前,我甚至插入輪廓。我曾與mongodb合作過,就像過去一樣。用couchdb做些事情迫使我重新思考如何構建數據。 –