Проверка схемы Arango для коллекции ребер с ложными дополнительными свойствами не работает

#arangodb

#arangodb

Вопрос:

Я использую проверку схемы ArangoDB, выпущенную в версии 3.7. Проверка схемы происходит, как и ожидалось, для коллекций документов. Но для коллекций ребер возникает следующая проблема.

  • Требование к краю: у края должно быть либо свойство id, либо вообще никаких свойств (следовательно, требуемый ключ не используется), и никаких других свойств (следовательно, для additionalProperties установлено значение false).

Я использовал следующую схему и экземпляр ребра. Но следующий экземпляр ребра не может быть создан, поскольку проверка схемы завершается неудачно.

Используемая схема:

 {
  "message": "Schema validation error",
  "level": "strict",
  "rule": {
    "properties": {
      "id": {
        "type": "string"
      }
    },
    "additionalProperties": false
  }
}
  

Попытка создания экземпляра ребра с использованием веб-интерфейса ArangoDB :

  • _from: DocCollection1 /t1
  • _to: DocCollection2 /t2
  • _key: e1
  • Тело документа: {}

Ребро может быть создано, если я изменю дополнительные свойства на true, но это также позволяет создавать ребра со свойствами с любым именем, которые мне не нужны.

Я искал в документации Arango и не могу понять, почему проверка схемы завершается неудачей для этого сценария в коллекциях ребер. Тот же сценарий отлично работает в коллекциях документов.

Среда: одиночный узел, версия v3.7.2, издание сообщества

Ответ №1:

Это была ошибка, которая была исправлена в 3.7.5:

https://github.com/arangodb/arangodb/issues/12778
https://github.com/arangodb/arangodb/pull/12967

К сожалению, для 3.7.4 и более ранних версий, похоже, нет обходного пути — добавление _from явно в качестве атрибута не помогает, я полагаю, потому что это специальное поле, которое требует внутреннего перевода.