ArangoDB-我可以使用foxx进行审核服务以记录所有更改

时间:2018-12-05 18:19:04

标签: arangodb foxx

从高角度来看,我想记录集合的所有更改。

我的第一种方法是使用另一个foxx服务: 假设我有foxx服务A。在A中,我执行删除操作。我想使用foxx服务B将已删除的数据与其他时间戳信息一起记录到另一个审核集合中。A每次删除某些内容时都会调用B。

我的问题是:

  1. 这是一种标准/可能的方法吗?还是arango还有其他内部审核方法?
  2. 是否有从1种服务中调用其他服务的示例?

1 个答案:

答案 0 :(得分:1)

据我所知,Arango不包括开箱即用的审计功能。下面是有关如何处理Foxx中的服务依赖关系的说明。官方文档可以在here中找到。该文档对我来说似乎很混乱,所以一旦弄清楚,便会写一些注释:)

假设我们有包含function1的service1。我们想从service2调用function1。

1.--在service1导出功能1的顶层main.js文件中

module.exports.function1 = function1;

2.--在service1的清单中添加一个Provides部分:

"provides" :{
    "@generic/generic" : "0.0.1"
  },

–在上面,“ @ generic”是一个命名空间,“ generic”是将用于引用此特殊依赖性的名称。请注意,名称空间不必为此一项服务唯一,而可以在其他服务中使用(例如“ @ generic / helper”)

3.-修改service2的清单,该清单将消耗依赖项,以便它知道依赖项。

"generic": {
  "name": "@generic/generic",
  "version": "^0.0.1",
  "description": "Generic collection get",
  "required": false,
  "multiple":false
}

–在上面,顶层标签(“通用”)是依赖项的别名,只要它在清单中列出的所有依赖项中是唯一的,它实际上就可以是任何东西。 “名称”是指在service1清单上定义的依赖项。其他选项不言自明。

4.-在Arango Web Gui中,转到service2的设置,然后单击“依赖项”按钮以添加依赖项的安装点(右上角)。如果未启用该按钮,请确保已保存对service2清单的更改,并且已在Arango中更新了该服务)

/generic

5.-最后,在service2的代码中,使用上下文对象的依赖项引用该依赖项

var generic = module.context.dependencies.generic;
const collection = generic.function1(param1,...);