2013-03-26 48 views
1

假設我有一個存儲日誌消息的數據庫。每條消息包含的信息爲優先,日期消息。應用程序應該能夠查詢日誌消息,可能受優先級限制,按日期排序。所以,我可以創造一個與[doc.priority, doc.date]一鍵調by_priority看法,那麼我就可以方便地查詢所有消息以至少$X與下面的請求的優先級值:查詢影響視圖輸出中範圍的更改而不重複邏輯

GET $database/_design/$design/_view/by-priority?startkey=[$X]&endkey=[{}]

現在我想延長應用程序在到達時自動獲取具有給定標準的新消息。我可以通過添加稱爲min_priority濾波器,具有至少$X(與prio查詢參數通過)一個優先級選擇消息,並進行以下請求這樣做:

GET $database/_changes?filter=$design/max_priority&prio=$X

但這意味着我不得不在服務器上(通過過濾功能)以及在客戶端(通過構造startkeyendkey的值)複製選擇邏輯(最小值,最大值,優先級範圍,優先級日期)。

真的有必要兩次實現相同的邏輯嗎?

或者是至少有可能共享代碼在視圖和過濾器函數之間爲文檔生成鍵 - 值對?這樣我可以爲每個視圖調用視圖函數並接受startkeyendkey參數的通用篩選器函數。我還需要一種方法來訪問CouchDB的比較密鑰算法。有沒有我可以從JavaScript訪問的功能?

回答

0

我認爲目前不可能在視圖和/或過濾器之間刪除重複代碼,儘管可以想象一個查詢服務器可以訪問這些類型的功能。