ArangoDB - Могу ли я использовать foxx для создания службы аудита для регистрации всех изменений - PullRequest
0 голосов
/ 05 декабря 2018

На высокоуровневом уровне я хотел бы регистрировать все изменения коллекции.

Мой первый подход - использовать другой сервис foxx: допустим, у меня есть сервис foxx A. В A я выполняю deleteоперация.Я хотел бы записать данные удаленного вместе с другой информацией о метках времени в другую коллекцию аудита, используя службу foxx B. B. A будет вызывать B каждый раз, когда что-то удаляет.

Мои вопросы:

  1. Это стандартный / возможный подход?Или у arango есть другой метод внутреннего аудита?
  2. Есть ли какой-нибудь пример того, как вызывать другие службы из 1 службы?

1 Ответ

0 голосов
/ 05 декабря 2018

Насколько я знаю, Аранго не включает Аудит из коробки.Ниже приведены мои заметки о том, как обрабатывать служебные зависимости в Foxx.Официальную документацию можно найти здесь .Документ кажется мне запутанным, поэтому я написал несколько заметок, как только понял - :)

Допустим, у нас есть service1, который содержит функцию1.Мы хотим вызвать function1 из service2.

1.- В файле main.js верхнего уровня для функции экспорта service11

module.exports.function1 = function1;

2.- В манифесте service1 добавьте раздел обеспечения:

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

- В приведенном выше тексте «@generic» - это пространство имен, а «generic» - это имя, которое будет использоваться для ссылки на эту частную зависимость.Обратите внимание, что пространство имен не обязательно должно быть уникальным для этой одной службы и может использоваться в других службах (например, «@ generic / helper»)

3.- Измените манифест службы2, которая будет использоватьзависимость, так что он знает о зависимости.

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

- В приведенном выше примере метка верхнего уровня («универсальный») является псевдонимом зависимости, она действительно может быть чем угодно, лишь бы онаявляется уникальным среди всех зависимостей, перечисленных в манифесте.«Имя» относится к зависимости, определенной в манифесте службы1.Другие параметры не требуют пояснений.

4.- В веб-интерфейсе Arango перейдите в настройки service2 и нажмите кнопки зависимостей, чтобы добавить точку монтирования для зависимости (верхний правый угол).Если кнопка не активирована, убедитесь, что изменения в манифесте service2 были сохранены и служба была обновлена ​​в Arango)

/generic

5.- Наконец, в коде для service2 укажите ссылку наиспользуя зависимости объекта контекста

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