2017-07-04 5 views
0

私は次のものを持っています: - データベースを照会して(おそらく大きな)JSONを受信できるnode.jsサーバー - gremlinサーバー-server-rest-modern.yamlがあるかもしれませんが、おそらくそこに何かが存在する必要があります)動的に作成されたデータを持つREST APIとしてのGremlinサーバー

私の質問は、動的にプログラム的にサーバーによって提供される新しいグラフを追加する方法はありますか?私は自分のノードサーバーにデータベースに問い合わせて、JSONレスポンスをgremlinサーバーに送るようにしたい。そこでは、応答はグラフに変換されます。ノードサーバーから、ユーザーは他の照会を送信して複雑な応答を受け取ることができます。それをどうすれば実現できますか?

私は[1]を使用しようとしましたが、私はどのようにして自分が望むことができるのか分かりません。ミニスクリプトのように、実際に複数の(連鎖した)コマンドをどのように送信しますか?私はコンソールを使用してそれを行う方法を知っていますが、公開されていないAPIがないため、サーバーをRESTサービスとして使用することはありません。アドバイスやいくつかの例を教えてもらえますか?ありがとう!

エイドリアン

[1] https://github.com/jbmusso/gremlin-javascript

編集: 私はいくつかの簡単なコマンドでサーバーにPOSTメッセージを送信するために管理。すべてのコマンド(グラフの作成とクエリ)を含むPOSTを送信すると動作します。ただし、複数のPOSTの場合、コンテキストは保存されません。まず、私はコンテンツとPOSTを送信しています:

その後
{ 
"gremlin" : "graph = TinkerGraph.open(); g = graph .traversal(); graph .addVertex('name', 'adrian', 'age', 21); " 
} 

、私は

{ 
"gremlin" : "v2 = graph.addVertex('name', 'gigel', 'age', 22); g.V()" 
} 

で別のPOSTを送信しかし、私は次のエラーを取得する:

{ 
    "message": "No such property: graf for class: Script4", 
    "Exception-Class": "groovy.lang.MissingPropertyException", 
    "exceptions": [ 
     "groovy.lang.MissingPropertyException" 
    ], 
    "stackTrace": "groovy.lang.MissingPropertyException: No such property: graf for class: Script4\n\tat org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)\n\tat org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52)\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)\n\tat Script4.run(Script4.groovy:1)\n\tat org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:834)\n\tat org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:547)\n\tat javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233)\n\tat org.apache.tinkerpop.gremlin.groovy.engine.ScriptEngines.eval(ScriptEngines.java:120)\n\tat org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$2(GremlinExecutor.java:314)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:745)\n" 
} 

コンテキストgremlinサーバーに保存されていませんか?私は実行されるスクリプト全体を送信する必要がありますか?後で2つのグラフを作成してクエリしたい場合はどうすればよいですか?

ありがとうございます!

答えて

3

セッションレス要求(RESTなど)を使用してスクリプトで作成したグラフは維持されません。セッション内の要求間で維持されるグラフインスタンスを作成できますが、それらはそのセッションでのみ維持され、そのセッション外では到達できません。

あなたは、彼らがでなければなりませんサーバーにグローバルグラフを作成する場合:カスタムGraphManagerインスタンスによって構築初期化スクリプト

  • (の一部として製造さ

      サーバーの設定ファイルで設定
    1. いくつかのJavaコードを書くことが含まれています)

    私はあなたが彼を管理することができますカスタムエンドポイントを構築することもできますhsを何らかの方法で使用していましたが、Gremlin Serverのコードを知っているだけでは大したことはありません。

  • 関連する問題