2017-06-26 3 views
1

Ich entwickle eine Anwendung mit Couchbase Lite auf der Client-Seite und Couchbase Sync Gateway auf der Serverseite.Mit Couchbase Lite und Sync Gateway, wie Dokumente aus widerrufenen Kanälen entfernt werden?

Auf Server-Seite, ich verwalte "Zugriff gewähren" Dokumente. Wenn ein solches Dokument erstellt wird, erhält der in diesem Dokument angegebene Benutzer Zugriff auf einen Kanal. Wenn ein solches Dokument entfernt wird, wird die Zugriffsberechtigung offensichtlich widerrufen. Es ist tatsächlich der Fall, ausgenommen für einen Punkt.

Angenommen, ich habe ein Dokument, das in dem Kanal veröffentlicht wird, auf den mein Benutzer Zugriff hat. Dann lösche ich das Dokument. Laut der Couchbase-Dokumentation hat der Benutzer nach dem Entfernen des Dokuments keinen Zugriff mehr auf den in access grant angegebenen Kanal.

Leider wurden die Dokumente, die in diesem Kanal veröffentlicht wurden, bereits mit der Couchbase lite DB des Benutzers synchronisiert. Daher meine Frage: Ich möchte Dokumente mit Kanälen verknüpft haben, für die der Benutzer keinen Zugang mehr hat, aus Couchbase lite gelöscht werden. Aber wie kann ich das tun? Es scheint nicht, dass entweder Replikations- oder Lvie-Abfragen dies zulassen können. Gibt es also einen spezifischen Mechanismus, der es mir ermöglicht, diese Art von Ereignis zu erhalten? Gibt es eine API, die ich noch nicht kenne?

Antwort

1

Dokumente werden Kanälen zugewiesen. Benutzer erhalten Zugriff auf Kanäle.

Wenn ein Dokument aus einem Kanal entfernt wird, wird dieses Ereignis mit einem Client synchronisiert.

Momentan gibt es keine Unterstützung für die Benachrichtigung eines Clients, dass er den Zugriff auf ein Dokument verloren hat, weil das Recht zum Lesen von einem Kanal verloren gegangen ist.

Dies ist ein schwieriges Problem. Da beispielsweise ein Dokument vielen Kanälen zugewiesen werden kann, bedeutet das Entziehen des Zugriffs auf einen Kanal (oder sogar einen Satz von Kanälen) nicht, dass ein Client keinen Zugriff mehr auf das Dokument hat.

Um zwei mögliche Ansätze zu sehen, um dies zu umgehen, siehe this GitHub issue comment series.

0

Sie können einen Webhook-Service erstellen, der ausgeführt werden kann, wenn ein Dokument gelöscht wird, und es als Lambda-Service oder etwas dieser Art oder auf Ihrem eigenen Anwendungsserver ausführen. Wenn ein Dokument entfernt wird, können Sie den Kanal aus dem Benutzer sync_gateway entfernen. Für Couchbase Sync Webhook Dokumentation des Gateways finden Sie hier: https://developer.couchbase.com/documentation/mobile/current/guides/sync-gateway/server-integration/index.html

Ich weiß, es ist ein längerer Prozess, und es sollte ein besserer Weg, dies zu tun, aber dies ist die einzige Lösung, die ich mich vorstellen kann.

+0

Das Problem mit diesem Ansatz ist, dass ich Dokumente auf Couchbase Lite, nicht Couchbase Server löschen möchte. – Riduidel

Verwandte Themen