2015-01-25 6 views
7

Anwendungsfall: die App, die ich auf gebaut habe, und eine Instanz des Teleskops auf community.foo.com, auf separaten Anwendungsservern. Die einzige Sammlung, die sie teilen würden, ist users. Ich würde die gleiche Mongo URL und Oplog URL beiden Apps geben, und stellen Sie sicher, dass andere als users, Sammlungsnamen nicht überlappen zwischen den beiden Apps.Kann ich dieselbe DB für mehrere Meteor-Apps verwenden?

Sollte das gut funktionieren? Irgendwelche Performance-Bedenken?

+0

mögliches Duplikat von [Kann ich mehrere verschiedene Meteor-Apps reaktiv von derselben MongoDB-Instanz ausführen lassen?] (Http: // stackoverflow.com/questions/28012989/can-i-get-mehrere-verschiedene-meteor-apps-reaktiv-reaktiv-off-the-same-mongodb) –

+2

@DavidWeldon, ich glaube nicht, dass es ein Duplikat ist, will er nur ein Teil der zu teilenden Datenbank. –

Antwort

6

Das Problem dabei ist, dass Sie die Sammlungsnamen teilen müssen.

Wenn Sie Ihre Datenbanken verwenden, sind Sie auch plötzlich gegen Telescope mit einem Sammlungsnamen versichert, den Ihre andere App auch für eine zukünftige Version verwendet.

Was Sie tun können, ist nur teilen Sie die users Sammlung, wenn Sie möchten.

Server-Side-Code (nicht auf dem Client erforderlich)

Accounts.connection = DDP.connect("https://<telescope app url>"); 

Meteor.users = new Mongo.Collection("users", { 
    _preventAutopublish: true, 
    connection: Accounts.connection 
}); 

oder mehr direkt (nicht bevorzugt, wenn Sie OAuth-Logins erlaubt sind)

var database = new MongoInternals.RemoteCollectionDriver("<mongo url of telescope app>"); 
Meteor.users = new Mongo.Collection("users", { _driver: database }); 

Also diese App jetzt nutzt das Teleskop App-Benutzersammlung

4

Es wäre überhaupt kein Problem damit. Zum Beispiel ist es ein häufiger Anwendungsfall, eine App für den Benutzer und eine Admin-App zu verwenden, die beide die gleiche Datenbank verwenden.

Wenn eine der beiden Anwendungen entwickeln, könnten sie brechen sich selbst oder die andere:

+0

Ja. Kein Problem. Sie können wie gewohnt veröffentlichen und abonnieren. Der Mongo Oplog hält alle Apps synchron. – benstr

1

Dies sollte nicht auf Datenbankebene durchgeführt werden.

Das ist die Art von Feature, die zu einer API-Schicht oder einem separaten Dienst gehören.

Auf diese Weise verfügen Sie über einen Benutzeridentitätsdienst, der Authentifizierungs- (auch domänenübergreifende) und grundlegende Benutzerdaten verarbeitet und jede anwendungsspezifische Benutzerinformation in ihrem eigenen Teil Ihres Ökosystems belässt. Kein Risiko einer Kernschmelze.

Ich kann empfehlen, ein paar:

  • Firebase
  • Parse
  • Hull.io (Disclaimer: Ich bin Gründer)
  • Auth0
  • LoginRadius

Die meisten davon verfügen über clientseitige Bibliotheken, die Sie für die Authentifizierung verwenden und einfach weitergeben Zurück die ID des aktuell angemeldeten Benutzers in Ihre App.

Einige bieten auch eine App ist der Meister zu haben, und die Authentifizierung von Benutzern, dann den Dienst zu sagen, wer angemeldet ist, so können Sie die Daten aus dem anderen App abrufen (bei Rumpf wir dies Ihre eigenen Nutzer bringen nennen)