2017-12-25 5 views
-2

In PouchDB Documentation fand ich, dass die Synchronisierung zwischen der lokalen Datenbank und der Remote-Datenbank CouchDB ist. Ich versuche, eine native Anwendung zu erstellen, die eine lokale Datenbank für jeden Benutzer (viele Datenbanken) und zu einer entfernten Datenbank synchronisieren:Mehrere PouchDB-Datenbanken mit einer CouchDB-Datenbank synchronisieren

Lassen Sie uns sagen, dass Benutzer 01 mit der entfernten Datenbank synchronisiert, dann Benutzer 02 synchronisiert es auch. Ich denke, es wird die Daten des ersten Benutzers überschreiben. Das möchte ich:

// Default 
user1 = ['data'] 
user2 = ['data'] 
remote = [user1 or user2] 

// what i want 
user1 = ['data'] 
user2 = ['data'] 
remote = [user1, user2, ....etc] 

Antwort

1

Die Replikation basiert auf der Reihenfolge der synchronisierten Datenbanken. Sie überschreiben also nur Daten, wenn sich ihre _id Werte gegenseitig überlagern. Ich vermute jedoch, dass das nächste Problem, mit dem Sie sich auseinandersetzen müssen, darin besteht, die Benutzerdaten getrennt zu halten.

Wenn Sie alle Benutzer in einer einzigen Datenbank replizieren, erhalten alle Benutzer auch die Daten aller anderen Benutzer, wenn sie sich aus dieser einzelnen Datenbank replizieren. Ich bin mir nicht sicher, was Ihr Anwendungsfall ist, aber das ist im Allgemeinen nicht so, wie Apps strukturiert sind. Wenn Sie eine einzelne Datenbank wie diese verwenden möchten, müssen Sie eine Art Tagging in Ihre Dokumente einfügen und Filtered Replication verwenden.

Um Ihre Daten nach Benutzern zu segmentieren, müssen Sie diesen Parameter bei jeder Synchronisierung sorgfältig verwenden. Ihre Datenbank wird jedoch wahrscheinlich dem öffentlichen Internet zugänglich gemacht, wenn Sie sie synchronisieren, und das Fehlen von Steuerelementen auf Dokumentebene bedeutet, dass Ihre schlauen Benutzer in der Lage sind, die Daten aller anderen zu sehen.

Meine Empfehlung hier ist, jedem Benutzer seine eigene Datenbank zu geben, anstatt alles in eine einzige Hub-Datenbank zu replizieren. Mit CouchDB 2.x haben Sie Zugriff auf couch_peruser, die jedem registrierten Benutzer automatisch eine eigene Datenbank gibt. (Dies erfordert die Registrierung Ihrer Benutzer bei CouchDB, aber ehrlich gesagt ist es das beste für die Sicherheit in einem öffentlich zugänglichen Server sowieso)

+0

Das ist es. Danke :) – elkebirmed

Verwandte Themen