爲了過濾來自其他用戶的自己的文檔,我返回文件爲重點,或鍵的一部分的創造者:如何在CouchDB中僅顯示用戶自己的文檔?
org.couchdb.user:user1
或
[org.couchdb.user:user1, otherkey]
是這個創建「我的文檔」頁面的最佳方法是什麼?或者,我可以簡單地返回另一個關鍵
otherkey
,並使用userCtx
稍後篩選呢?
爲了過濾來自其他用戶的自己的文檔,我返回文件爲重點,或鍵的一部分的創造者:如何在CouchDB中僅顯示用戶自己的文檔?
org.couchdb.user:user1
或
[org.couchdb.user:user1, otherkey]
是這個創建「我的文檔」頁面的最佳方法是什麼?或者,我可以簡單地返回另一個關鍵
otherkey
,並使用userCtx
稍後篩選呢?
答案取決於你的架構。
如果你有某種客戶端和數據庫之間的「中間件」的,可以限制通過查詢?startkey=["org.couchdb.user:user1"]&endkey=["org.couchdb.user:user1",{}]
你的數據從你描述的第二視圖模式([org.couchdb.user:user1, otherkey]
)獲取。這將結果限制爲第一個可能的發射鍵和最後一個鍵之間的結果,因爲較短的數組排序時間較長,而對象按其他值類型排序。
如果您嘗試儘可能多地在CouchDB中執行驗證和數據顯示(例如,您正在編寫「CouchApp」),那麼您應該考慮使用filtered replication。這可以用來爲每個用戶提供他們自己的個人數據庫,例如只包含他們應該看到的文檔的非公共主數據庫的子集。然後,您可以發出純文檔密鑰,並假定您的結果只包含相關文檔。
關於過濾複製在本博客文章中的使用過程,有更多的背景資料,您可以在這裏找到關於特定問題的更多討論。
您是否需要禁止訪問非擁有的文檔? – 2012-03-31 06:53:16
是的。最終,我想讓他們有權允許其他用戶查看或編輯它們。 – 2012-03-31 13:32:16