2016-08-09 85 views
0

Ich habe versucht, eine Horizon-App mit einer extern gehosteten RethinkDB zusammenzustellen, und ich konnte es nicht mit vorhandenen Tools arbeiten sehen. Ich verstehe, dass Horizon eine serverseitige API-Komponente enthält, was möglicherweise der Grund dafür ist.Kann ich von außerhalb der Horizon App auf eine Horizon RethinkDB-Instanz zugreifen?

Ich möchte Dokumente in meiner RethinkDB direkt von einem externen Server einfügen und/oder aktualisieren können, und diese Aktualisierungen an abonnierte Browser übertragen werden. Ist das möglich und/oder weise?

Vorzugsweise würde dies meinen Horizon Express Server überhaupt nicht einbeziehen. Ich würde es vorziehen, meine eigene API dafür nicht verfügbar machen zu müssen.

+0

Hört der Server eine zugängliche Schnittstelle (0.0.0.0)? Haben Sie versucht, den nativen rethinkdb-Treiber zu verwenden und ihm die Host- und Port-Adressen für den Umdenken-Server zu übergeben? Das hat wirklich nichts mit Horizont zu tun, da es aus der Sicht von rethinkdb genau wie jeder andere Client ist. Außerdem müssen Sie Berechtigungen usw. konfigurieren, damit Ihr Server sicher und für andere nicht zugänglich ist. – AlanZ2223

+0

Hey Erik J, das ist definitiv möglich, aber ich brauche noch mehr Informationen, um dir zu helfen, die Punkte zu verbinden. Soweit ich weiß, möchten Sie, dass ein separater Dienst Daten in RethinkDB pusht und für Horizon zugänglich macht. – dalanmiller

+0

Haben Sie das herausgefunden? – dalanmiller

Antwort

0

Dies ist vollständig möglich, solange die RethinkDB-Instanz für den Dienst sichtbar ist, der Daten in RethinkDB verschiebt. Sie würden dann nur über eine Standard-Treiberverbindung with your language of choice mit RethinkDB verbinden. Ein einfacher in Python würde wie folgt aussehen:

import rethinkdb as r 

conn = r.connect('localhost', 28015) 
r.db("horizon_project_name").table("things").insert({'text': 'Hello, World!'}).run(conn) 

Dann, wenn Sie Horizont beginnen, sollten Sie sicherstellen, dass die --connect Flagge und geben Sie die Hostnamen und Port der gleichen RethinkDB Instanz verwenden.

Ein Beispiel, wenn RethinkDB auf der gleichen Maschine wie Horizon ausgeführt wird:

hz serve --connect localhost:28015 

In Horizont, würden Sie in der Lage sein, wie so auf diese Nachrichten hören im Browser:

const horizon = Horizon(); 
horizon('things').subscribe((result) => { 
    // `result` is the entire collection as an array 
    console.log("result!", result); 
}); 

Wenn Sie weitere Hilfe benötigen, zögern Sie nicht mich zu twittern @dalanmiller oder erstellen Sie ein neues Thema in discuss.horizon.io!