我有一個將數據存儲在本地PouchDB中的離子應用程序。使用CouchDB創建複雜的過濾器
我的數據庫存儲文檔這樣例如:
{
Timestamp: "2016-11-17T09:35:06",
Category: "CAT_1",
Place: "House",
...
Responsible: "Foo Bar",
...
},
{
Timestamp: "2016-11-07T18:45:11",
CategoryCode: "CAT_2",
Place: "Apartment",
...
Responsible: "Bar Foo",
...
}
我的離子的應用程序需要的過濾器屏幕,其中用戶可以選擇任何/所有這4個字段,並且應用它用於過濾。
因此,我的應用程序用戶只能選擇Timestamp
來僅在特定日期搜索貨幣。他可以通過單一的Category
等選擇過濾器。
他可以創建這些4種元素的任意組合,如:
[Timestamp,Category]
[Timestamp,Place]
[Category,Place]
[Timestamp,Responsible]
...
我總是要通過Timestamp
成反比訂貨,但這不是問題。
的問題是,我無法找到任何地圖功能,可以給該類型的靈活性......
我知道,如果用戶必須填寫所有過濾器,我可以很容易地使用這個地圖功能:
map:
function (doc) {
emit([Timestamp,Category,Place,Responsible], doc.Name);
}
有了這個,我知道我可以查詢這個可能性:
[Timestamp,{}]
[Timestamp,Category,{}]
[Timestamp,Category,Place,{}]
[Timestamp,Category,Place,Responsible]
但我不能只[Place,Responsible]
濾波器,因爲CouchDB的/ PouchDB別讓像我之前展示的那樣,我只在右側放置了通配符,如[{},{},Place,Responsible]
。
我知道我可以爲每個可能一個地圖,但今天我們過濾器,明天也可以是!
你們有些人能給我一點我能做些什麼來掩飾它嗎?
我知道我在SQL上的背景應該會讓我走錯方向,但我認爲使用NoSQL和特別是CouchDB/PouchDB創建複雜的過濾器並不困難。
我是第一個嘗試這樣做的人是不可能的。
感謝您的幫助!