Javascript 通过java API从orientdb调用JS函数
我试图通过OrientDB Java API从Java调用OrientDB中存储的自定义JS函数 我可以在studio中使用该功能,它可以按预期工作 这是用于连接数据库并获取函数的代码:Javascript 通过java API从orientdb调用JS函数,javascript,java,function,api,orientdb,Javascript,Java,Function,Api,Orientdb,我试图通过OrientDB Java API从Java调用OrientDB中存储的自定义JS函数 我可以在studio中使用该功能,它可以按预期工作 这是用于连接数据库并获取函数的代码: OrientGraphFactory factory = new OrientGraphFactory(SERVER_URL, "user", "pass"); OrientGraph txGraph = factory.getTx(); OFunction functionObject = txGraph.g
OrientGraphFactory factory = new OrientGraphFactory(SERVER_URL, "user", "pass");
OrientGraph txGraph = factory.getTx();
OFunction functionObject = txGraph.getRawGraph().getMetadata()
.getFunctionLibrary().getFunction("functionName");
问题是返回的functionObject为null,检查getFunctionLibrary()
结果,我可以看到函数列表为空
知道我做错了什么吗
使用官方示例,将给出相同的空结果
乐:对于任何在这方面遇到障碍的人,完整的工作代码是:
OrientGraphFactory factory = new OrientGraphFactory(SERVER_URL, "user", "pass");
OrientGraph txGraph = factory.getTx();
Double response = (Double) txGraph.command(new OCommandFunction("functionName")).execute(functionParameter);
其中,
response
是函数给出的结果,functionParameter
是我传递给函数的参数。这只适用于java函数(文档中的示例是正确的,因为它检索java函数)。
为了执行js/sql/任何函数,请使用OCommandFunction。大概是这样的:
txGraph.command(new OCommandFunction("functionName")).execute()
可能它也可以直接工作(如果您不需要将结果转换为图形对象)
但在这种情况下,db实例必须附加到线程(在函数调用之前创建的db连接对象)
new OCommandFunction("functionName").execute()