2012-03-30 3 views
0

Um ein Benutzer eigenen Dokumente von anderen zu filtern, ich bin wieder der Schöpfer des Dokuments als Schlüssel oder Teil des Schlüssels:Wie zeige ich nur die eigenen Dokumente eines Benutzers in CouchDB an?

org.couchdb.user:user1 

oder

[org.couchdb.user:user1, otherkey] 

Ist das der beste Möglichkeit, eine "Meine Dokumente" -Seite zu erstellen? Oder kann ich einfach zurückgeben eine andere Taste

otherkey 

und verwenden userCtx zu filtern später?

+0

Müssen Sie den Zugriff auf nicht im Besitz befindliche Dokumente verbieten? –

+0

Ja. Schließlich möchte ich ihnen die Möglichkeit geben, anderen Benutzern zu erlauben, sie zu sehen oder zu bearbeiten. –

Antwort

0

Die Antwort hängt von Ihrer Architektur ab.

Wenn Sie irgendeine Art von „Middleware“ zwischen den Clients und der Datenbank haben, können Sie Ihre Daten aus der zweiten Ansicht Muster holen begrenzen Sie beschreiben ([org.couchdb.user:user1, otherkey]) durch ?startkey=["org.couchdb.user:user1"]&endkey=["org.couchdb.user:user1",{}] abfragt. Dies begrenzt die Ergebnisse auf diejenigen zwischen dem ersten möglichen ausgegebenen Schlüssel und dem letzten, da ein kürzeres Array vor längerem sortiert und ein Objekt nach anderen Werttypen sortiert.

Wenn Sie versuchen, so viel Validierung und Datenanzeige in CouchDB wie möglich zu machen (z. B. Sie schreiben eine "CouchApp"), dann sollten Sie über die Verwendung von filtered replication nachdenken. Dies kann verwendet werden, um jedem Benutzer seine eigene persönliche Datenbank zu geben, z. eine Untergruppe einer nicht öffentlichen Master-Datenbank, die nur Dokumente enthält, die sie sehen sollten. Dann können Sie nur einfache Dokumentschlüssel ausgeben und davon ausgehen, dass Ihre Ergebnisse nur relevante Dokumente enthalten.

Es gibt ein wenig mehr Hintergrundinformationen zur Verwendung der gefilterten Replikation auf halbem Weg zu diesem Blogpost, und hier finden Sie möglicherweise weitere Diskussionen zu bestimmten Fragen.

Verwandte Themen