【问题标题】:ArangoDB- Can I use foxx to make an audit service to log all changesArangoDB-我可以使用 foxx 进行审计服务来记录所有更改吗
【发布时间】:2018-12-05 18:19:03
【问题描述】:

从高层次的角度来看,我想记录一个集合的所有变化。

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

我的问题是:

  1. 这是一种标准/可能的方法吗?或者 arango 有其他内部审计方法吗?
  2. 是否有任何示例说明如何从 1 个服务调用其他服务?

【问题讨论】:

标签: arangodb foxx


【解决方案1】:

据我所知,Arango 不包括开箱即用的审计。下面是我关于如何在 Foxx 中处理服务依赖项的说明。官方文档可以在here 找到。文档对我来说似乎很困惑,所以我一弄明白就写了一些笔记:)

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

1.-在service1导出函数1的顶层main.js文件中

module.exports.function1 = function1;

2.- 在 service1 的清单中添加提供部分:

"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,...);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多