代码之家  ›  专栏  ›  技术社区  ›  Dave Challis

在ArangoDB中添加/调用非AQL服务器端函数?

  •  0
  • Dave Challis  · 技术社区  · 5 年前

    我知道ArangoDB允许 custom AQL functions 要在服务器端定义,但是否可以定义在事务期间可以调用的服务器端Javascript函数?

    我使用Java驱动程序连接到ArangoDB,ArangoDB通过 sending a Javascript function 作为字符串。

    为了避免每次发送一个大而复杂的字符串(我使用的一个事务大约500行长),我宁愿将其存储在服务器端,并更简单地从Java调用。

    E、 g.而不是像这样运行:

    String action = "function (params) {"
                  + "const db = require('@arangodb').db;"
                  + "return db._query('FOR i IN test RETURN i._key').toArray();"
                  + "}";
    String[] keys = arango.db().transaction(action, String[].class, new TransactionOptions());
    

    我想打这样的电话:

    String action = "my_function";
    String[] keys = arango.db().transaction(action, String[].class, new TransactionOptions());
    

    或:

    String action = "function(params) {"
                  + "const my_function = require("somefunc");
                  + "return my_function(params);
                  + "}";
    

    这是否可能实现?

    0 回复  |  直到 5 年前
        1
  •  1
  •   CodeManX    5 年前

    可以使用编写自定义端点 Foxx

    它是一个用JavaScript编写的微服务框架,允许您在服务器端执行复杂的JS代码,并访问ArangoDB的内部JSAPI( db object 等等)。您可以封装其中的任何业务逻辑,例如500行事务代码,并添加一些参数从外部控制它,而无需每次发送所有代码。