【问题标题】:How to grant a task to execute a query?如何授予任务执行查询?
【发布时间】:2017-05-02 08:33:05
【问题描述】:

我需要在我的 ArangoDb 中运行一个连续的任务,数据库本身已开启安全性。当我将任务发布到 API 端点时,该任务已注册,但随后在错误日志中我得到以下信息:

3,75 处文件“未定义”中的 JavaScript 异常:ArangoError 11: 禁止

这不足为奇...但是我如何才能真正从 @arangodb 模块登录用户?

以防万一,这是我的任务代码:

    function() {
      const db = require('@arangodb').db;
      db._useDatabase("foo"); 
      db._query("LET now = DATE_NOW() FOR u IN wait FILTER now - u.time >= 300000 REMOVE {_key: u._key} IN wait"); 
    }    

【问题讨论】:

    标签: security task arangodb nosql


    【解决方案1】:

    看看this other question,它指出,Foxx 唯一可以访问的其他数据库是 _system。

    我假设您的示例未在 'foo' 中运行,并且您正试图跳转到其他数据库,这是被禁止的。

    如果您想在其他数据库中拥有单一数据视图,您可以使用 Foxx 在每个数据库中发布 REST 端点,然后从外部应用程序调用所有这些 REST 端点,从多个数据库中提取数据。

    【讨论】:

    • 您好,感谢您的回答。正如我所说,我没有使用 foxx,也没有从一个数据库跳转到另一个数据库。由于任务发布在 foo 数据库上,并且我的查询作用于该数据库的集合。我正在使用这个功能link
    • 啊,当你提到 @arangodb 模块时,我以为它在 Foxx 中。如果您从 Node.js 运行此代码,您是否查看过由 ArangoDB 团队维护的 arangojs library
    • 是的,大卫,我正在 arangojs 上运行我的节点应用程序。我正在尝试使用 arangoDb 的任务功能,链接在我上面的评论中。此功能提供了一个 api 端点,我可以在其中发布一个 JS 函数,以每隔 x 秒在 Arango 内部 V8 之上运行。事实是我找不到向数据库验证该任务的方法。感谢您的关注
    • 那么您正在使用 Foxx 队列服务并在其中运行任务?这些任务仍然只能使用它们所在的数据库以及_system。我也使用任务,它们无法从数据库中退出。
    猜你喜欢
    • 2016-11-10
    • 2022-01-27
    • 2011-06-02
    • 1970-01-01
    • 2013-01-27
    • 2014-10-06
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多