2017-06-08 1 views
0

Das ist mein json Daten anzuwenden istWie Filter Couchbase Server mit 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" 
} 

Hier ist, was bisher versucht wird

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"; 

i Ergebnis erhalten möchten, die nur Typ Benutzer enthalten. Aber ich kann keinen Filter anwenden.

+0

Ist es ein Tippfehler oder Sie versuchen, "Benutzer" mit "USer" zu vergleichen, die nicht das gleiche Gehäuse hat? –

+0

Ich versuchte diesen Benutzer, aber nicht –

Antwort

1

Wenn Sie also nur einen Filter für Benutzer erstellen möchten, benötigen Sie keinen Parameter. Was Sie tun möchten, ist wahr, wenn der Dokumententyp "Benutzer" ist.

Hier ist ein Beispiel:

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"; 

Wenn Sie mehr dynamisch sein, können Sie einen Filter byType erstellen und die „user“ Typ-Parameter angeben.

Beispiel:

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"} }; 

Weitere Einzelheiten finden Sie CouchBase Dokumentation.

+0

Ich versuchte das auch, aber nicht nur Typ Benutzer –

+0

Können Sie einige Protokolle hinzufügen, um zu sehen, welche Werte an Ihre Funktionen übergeben werden? Zum Beispiel, ist der docType Wert korrekt, sind die Parameter korrekt? –