2016-07-20 12 views
1

Ich beginne ein Projekt und nachdem ich viel gelesen habe bin ich zu der Schlussfolgerung gekommen, dass ich Sync Gateway REST API Aufrufe von mobilen AND Server (Backend) Apps anstelle von Bucket Shadowing verwenden sollte. Allerdings ist Sync Gateway offensichtlich ziemlich nervig, wenn es um Abfragen geht, insbesondere dynamische Abfragen. Meine Idee ist, ein kleines Modul für Backend-Anwendungen zu schreiben, das Sync Gateway für Schreibvorgänge und das NodeJS SDK für Lesevorgänge verwendet. Auf diese Weise kann ich N1QL, Sichten usw. für gets/queries verwenden (statt mit Sync Gateway unangenehme Dinge zu tun) und ich kann sicher sein, dass meine Daten beim Schreiben richtig synchronisiert werden.Couchbase Sync Gateway Client und Server Seite

Ist mein Denken hier fehlerhaft? Kann jemand irgendwelche Probleme mit diesem Ansatz vorhersehen?

Antwort

1

Es gibt nichts, was Sie daran hindert, das NodeJS SDK zu verwenden, um sich direkt mit dem Sync-Gateway-Bucket zu verbinden. Die JSON-Inhalte des Buckets werden jedoch nicht öffentlich dokumentiert und werden sich wahrscheinlich in zukünftigen Versionen ändern.

Dieses Forum Thread ab Juni 2014 gibt stillschweigendes Eingeständnis, dass dieser Ansatz machbar ist, auf eigene Gefahr: https://groups.google.com/forum/#!topic/mobile-couchbase/OeTk1fzYJvE

ich glaube, das Hauptmuster mit Sync-Gateway für die Interaktion ist für die Code-Server-Kanäle zu abonnieren, und manchmal mutieren Dokumente basierend auf den Änderungen, die es sieht. Wenn eine gelegentliche Map-Reduzierungsabfrage auftaucht, ist es meiner Meinung nach in Ordnung, diese gegen den Gateway-Bucket auszuführen und den Overhead der Bucket-Shadowing vollständig zu vermeiden. So lange Sie verstehen, dass sich das Sync-Gateway-Datenlayout in Zukunft ändern kann. Wir betrachten das JSON, das wir in Couchbase Server speichern, nicht als öffentliche API.

Gerade jetzt würden Sie Ihre Karte Funktionen wickeln wie diese wollen:

function(doc, meta) { 
    if (doc._sync && !doc._deleted) { 
    emit(doc.foo, null); 
    } 
} 

Der Ansatz ist Ihre Ansichten mit einem Filter zu definieren Sync Gateway Dokumente auszuschließen. Die obige Warnung gilt jedoch weiterhin: Das Synchronisierungsgateway kann die Darstellung von Dokumenten in zukünftigen Versionen ändern.

Ich fand auch eine andere SO-Antwort, die eine N1QL-Abfrage auf einem Sync-Gateway-Bucket detailliert: https://stackoverflow.com/a/37036363

0

Das NodeJS SDK kann nicht auf den Sync Gateway-Bucket zugreifen, es sei denn, es wird Bucket-Shadowing verwendet, was nicht empfohlen wird.

Wenn Sie Couchbase Mobile nicht verwenden möchten, gehen Sie ohne Sync Gateway aus, nutzen Sie Couchbase Server und NodeJS SDK für die Serverseite und erstellen Sie Ihre eigene REST API für mobile Geräte.

Verwandte Themen