2017-06-08 15 views
0

這是我的JSON數據如何應用過濾器Couchbase Server中使用C#

{ 
"_id":"biking", 
"_rev":"AE19EBC7654", 
"type":"user", 
"body":"My biggest hobby is mountainbiking. The other day...", 
"date":"2009/01/30 18:04:11" 
} 
{ 
"_id":"biking", 
"_rev":"AE19EBC7654", 
"type":"testuser", 
"body":"My biggest hobby is mountainbiking. The other day...", 
"date":"2009/01/30 18:04:11" 
} 

這裏是什麼是迄今爲止

var pull = _db.CreatePullReplication(syncGatewayUri); 
var push = _db.CreatePushReplication(syncGatewayUri); 

_db.SetFilter("byUser", (revision, filterParams) => 
{ 
var typeParam = filterParams["type"].ToString(); 

return (typeParam != null) && typeParam.Equals("USer"); 
}); 

pull.Filter ="byUser"; 

我想只包含類型的用戶結果嘗試。但我無法應用過濾器。

+0

這是一個拼寫錯誤還是你試圖比較'用戶'與'USer'有不一樣的外殼? –

+0

我試過那個用戶但沒有收到 –

回答

1

因此,如果您只想爲用戶創建過濾器,則不需要參數。如果文檔的類型是「user」,你想要做的是返回true。

下面是一個例子:

var pull = _db.CreatePullReplication(syncGatewayUri); 
var push = _db.CreatePushReplication(syncGatewayUri); 

_db.SetFilter("byUser", (revision, filterParams) => 
{ 
    //We get the type property 
    var docType = (string)revision.GetProperty("type"); 
    //We make sure it's a user 
    return !String.IsNullOrEmpty(docType) && docType.toLowerCase() == "user"; 
}); 

pull.Filter ="byUser"; 

如果你想更有活力,你可以創建一個過濾器byType的,並指定了「用戶」類型參數。

實施例:

var pull = _db.CreatePullReplication(syncGatewayUri); 
var push = _db.CreatePushReplication(syncGatewayUri); 

_db.SetFilter("byType", (revision, filterParams) => 
{ 
var typeParam = filterParams["type"].ToString(); 
var docType = (string)revision.GetProperty("type"); 
return (typeParam != null) && !String.isNullOrEmpty(docType) && typeParam.toLowerCase() == docType.toLowerCase(); 
}) 

pull.Filter ="byType"; 
pull.FilterParams = new Dictionary<string, object> { {"type", "user"} }; 

有關更多細節,參見CouchBase文檔。

+0

我試過那個,但沒有收到只有輸入用戶 –

+0

你可以添加一些日誌來看看傳遞給你函數的值是什麼?例如,docType值是否正確,參數是否正確傳遞? –