Database Reference
In-Depth Information
Änderungen iltern
Wie gerade gesehen, bietet die Changes-API einen Einblick in die Vorgänge
innerhalb einer CouchDB-Datenbank. Sie liefert alle Änderungen in einem
einzigen Stream zurück. Manchmal will man aber gar nicht jede kleine Än-
derung wissen, sondern ist nur an einer Teilmenge der Änderungen interes-
siert. Zum Beispiel könnten Sie nur wissen wollen, ob Dokumente gelöscht
wurden oder ob Dokumente einer bestimmten Gruppe verändert wurden. An
dieser Stelle kommen Filterfunktionen ins Spiel.
Ein Filter ist eine Funktion, die ein Dokument (und Request-Informationen)
nimmt und entscheidet, ob er das Dokument durchlässt oder nicht. Das ist
abhängig vom Rückgabewert. Sehen wir uns an, wie das funktioniert. In un-
serer music -Datenbank besitzen die meisten artist-Dokumente eine country -
Property, die einen aus drei Buchstaben bestehenden Code enthält. Nehmen
wir an, wir wären nur an Bands aus Russland (RUS) interessiert. Unsere
Filterfunktion könnte wie folgt aussehen:
function (doc) {
return doc.country === "RUS" ;
}
Fügen wir das in ein Design-Dokument unter dem Schlüssel filters ein,
können wir sie bei _ changes -Request mit angeben. Doch bevor wir das tun,
wollen wir unser Beispiel erweitern. Statt immer nur russische Bands zu
filtern, sollten wir die Eingabe parametrisieren, damit wir das gewünschte
Land in der URL angeben können.
Hier ein parametrisierter Länderfilter:
function (doc, req) {
return doc.country === req.query.country;
}
Beachten Sie, dass wir die country -Property des Dokuments mit einem Para-
meter gleichen Namens vergleichen, der im Query-String des Requests ange-
geben wurde. Um uns das in Aktion anzusehen, legen wir ein neues Design-
Dokument für geographische Filter an und fügen die Funktion hinzu:
$ curl -X PUT \
http://localhost:5984/music/ _ design/wherabouts \
-H "Content-Type: application/json" \
-d '{"language":"javascript","filters":{"by _ country":
"function(doc,req){return doc.country === req.query.country;}"
}}'
Search WWH ::




Custom Search