gpt4 book ai didi

node.js - Gremlin Server 作为 REST API,具有动态创建的数据

转载 作者:太空宇宙 更新时间:2023-11-03 22:50:52 25 4
gpt4 key购买 nike

假设我有以下内容:- 能够查询数据库并接收(可能很大)JSON 的node.js 服务器- 一个 gremlin 服务器(使用 gremlin-server-rest-modern.yaml 配置,但也许里面肯定还有更多东西)

我的问题是:有没有一种方法可以动态地、以编程方式添加要由服务器提供的新图表?我希望我的 Node 服务器查询数据库并将 JSON 响应发送到 gremlin 服务器;在那里,响应将被转换成图表;从 Node 服务器,用户将能够发送其他查询并接收复杂的响应。我怎样才能实现这一目标?

我尝试使用[1],但我不确定如何做我想做的事。实际上如何发送多个(链接的)命令,例如迷你脚本?我知道如何使用控制台来执行此操作,但不使用服务器(作为 REST 服务),因为没有公开的 API。你能给我一个建议或者一些例子吗?谢谢!

阿德里安

[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()"
}

但是,我收到以下错误:

{
"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 服务器上?我必须发送整个脚本才能执行?如果我想创建两个图表并稍后查询它们怎么办?

谢谢!

最佳答案

您通过无 session 请求(如 REST)在脚本中创建的图表不会得到维护。您可以创建在 session 中的请求之间维护的图形实例,但它们仅在该 session 中维护,并且在该 session 之外不可访问。

如果您想为服务器全局创建图表,它们必须是:

  1. 在服务器配置文件中配置
  2. 作为初始化脚本的一部分生成
  3. 由自定义 GraphManager 实例构造(涉及编写一些 Java 代码)

我想也可以构建一个自定义端点,让您以某种方式管理图表,但是您必须对 Gremlin Server 的代码有更多的粗略了解才能实现这一点(不会虽然太难了)。

关于node.js - Gremlin Server 作为 REST API,具有动态创建的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44912946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com