2012-03-30 67 views
0

爲了過濾來自其他用戶的自己的文檔,我返回文件爲重點,或鍵的一部分的創造者:如何在CouchDB中僅顯示用戶自己的文檔?

org.couchdb.user:user1 

[org.couchdb.user:user1, otherkey] 

是這個創建「我的文檔」頁面的最佳方法是什麼?或者,我可以簡單地返回另一個關鍵

otherkey 

,並使用userCtx稍後篩選呢?

+0

您是否需要禁止訪問非擁有的文檔? – 2012-03-31 06:53:16

+0

是的。最終,我想讓他們有權允許其他用戶查看或編輯它們。 – 2012-03-31 13:32:16

回答

0

答案取決於你的架構。

如果你有某種客戶端和數據庫之間的「中間件」的,可以限制通過查詢?startkey=["org.couchdb.user:user1"]&endkey=["org.couchdb.user:user1",{}]你的數據從你描述的第二視圖模式([org.couchdb.user:user1, otherkey])獲取。這將結果限制爲第一個可能的發射鍵和最後一個鍵之間的結果,因爲較短的數組排序時間較長,而對象按其他值類型排序。

如果您嘗試儘可能多地在CouchDB中執行驗證和數據顯示(例如,您正在編寫「CouchApp」),那麼您應該考慮使用filtered replication。這可以用來爲每個用戶提供他們自己的個人數據庫,例如只包含他們應該看到的文檔的非公共主數據庫的子集。然後,您可以發出純文檔密鑰,並假定您的結果只包含相關文檔。

關於過濾複製在本博客文章中的使用過程,有更多的背景資料,您可以在這裏找到關於特定問題的更多討論。

相關問題