2016-09-19 2 views
0

Ich verwende PouchDB + CouchDB zum Speichern und Synchronisieren von Daten in einer eckigen App, die sich gerade in der Entwicklung befindet. Die Daten werden pro Benutzer gespeichert und enthalten Informationen wie Benutzerberechtigungen/Einstellungen, zuletzt angezeigte Inhalte und Warenkorbelemente.PouchDB/CouchDB Verwendung/Schema für Benutzerdaten

Derzeit habe ich eine einzige CouchDB-Datenbank, die ein Dokument für jeden Benutzer enthält. Diese Struktur eignet sich zwar gut zum schnellen Abrufen benutzerspezifischer Daten, ist jedoch logisch fehlerhaft, da alle Benutzerdokumente mit jedem Gerät synchronisiert werden, das auf die App zugreift. Mit anderen Worten, ich brauche letztendlich nur die Daten des aktuell angemeldeten Benutzers zur Synchronisierung.

Also, meine Frage ist, sollte ich eine Couch-Datenbank für jeden Benutzer anstatt eine einzige Datenbank mit einem Dokument für jeden Benutzer erstellen? Oder gibt es einen besseren Weg?

+0

Haben Sie versucht, einen Pull-Filter zu setzen? –

+0

@MichaelPickett Nein, habe ich nicht, können Sie mich auf ein Beispiel oder eine Dokumentation verweisen? Wird ein Pull-Filter mit Design-Dokumentabfragen durchgeführt? – Jbird

+2

Heres etwas, das ich gefunden habe, kann helfen https://pouchdb.com/2015/04/05/filtered-replication.html –

Antwort

0

Wenn Sie das Plugin pouchdb-authentication betrachten, können Sie Metadaten für einen Benutzer in der Datenbank _user speichern. Das könnte alles sein, was du brauchst.

+0

Das mag für minimales Benutzer-Meta funktionieren, aber in Situationen, in denen Sie mit gespeicherten Einkaufswagen, Standortdaten, Transaktionsverlauf, App-Einstellungen usw. arbeiten, benötigen Sie mehrere Dokumente, wenn nicht mehrere Datenbanken. Ich verwendete schließlich ein einzelnes Dokument für jeden Benutzer und verwendete Filter, um selektiv nur die angemeldeten Benutzerdaten mit ihrem Gerät zu synchronisieren. – Jbird

+0

Die "DB pro Benutzer" ist eine Standard-Praxis für CouchDB, also ist es sinnvoll, Dinge wie "Warenkorb" -Daten in einer Benutzerdatenbank zu speichern, da dies keine "Benutzer" -Meta-Daten sind. Das sind nur Daten, die in der Benutzerdatenbank gespeichert werden sollen. Die "_user" -Datenbank bietet integrierte Funktionen zum Authentifizieren von Benutzern und zum Speichern von "Metadaten" wie Name, Adresse usw. Sie ist nicht zum Speichern von Benutzerdaten vorgesehen. –