монтирование не работает для приложения arangodb foxx

Я создал foxx-приложение для приложения, над которым работаю. Я пытался установить приложение foxx в основной ветке arangodb.
Я выполнил следующие шаги:
1. создать новую базу данных из arangosh 'db._createDatabase ("databasename")'
2. выполнить команду 'foxx-manager --server.database " "получить каталог '
3. затем запустить команду' foxx-manager --server.database" "mount '

Но когда я посмотрел журналы, он выдает следующую ошибку

2014-11-23T04: 08: 44Z [2584] ОШИБКА Не удается вычислить маршруты приложения Foxx: [ArangoError 1924: график не найден]
2014-11-23T04: 08: 44Z [2584] ОШИБКА Не удается смонтировать приложение приложения Foxx. : contactspace: 1.0 ': Ошибка: Невозможно вычислить таблицу маршрутизации для приложения Foxx app: contactspace: 1.0', проверьте файл журнала на наличие ошибок! \ n в Object.exports.appRoutes (/ usr / share / arangodb / js / server /modules/org/arangodb/foxx/manager.js:1525:15)\n в Object.reloadRouting (/usr/share/arangodb/js/server/modules/org/arangodb/actions.js:1241:38) \ n в методе глобального контекста: 1:33 \ n

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

Приложение foxx работает нормально в случае экземпляра arangodb dev.

Дополнительную информацию можно найти здесь:

Да, я создаю общий граф только с одним определением ребра. ниже приведен setup.js для этого

// load modules
var graph_module = require("org/arangodb/general-graph");

// create graph if does not already exists
var graph = null;
if(!graph_module._exists("sampleGraph")) {
    var containsXRelation = graph_module._directedRelation("containsX", ["X"], ["X"]);
    var edgeDefinitions = graph_module._edgeDefinitions(containsXRelation);
    graph = graph_module._create("sampleGraph", edgeDefinitions);
}
else {
    graph = graph_module._graph("sampleGraph");
}

им еще кое-что вроде создания индексов ...

Кроме того, у меня есть некоторый код, связанный с графом, вне действий контроллера:

var sampleGraph = graph_module._graph("sampleGraph");
var vertex = contactSpaceGraph._getVertexCollectionByName("contactX");
var edge = contactSpaceGraph._getEdgeCollectionByName("X");

person Vikas Tandi    schedule 23.11.2014    source источник


Ответы (1)


То, что вы делаете, то же самое, что и я, там есть несколько небольших ошибок, которые приводят к ошибкам:

  • Вы написали contactX вместо containsX в контроллере
  • Вы поменяли имя коллекции вершин и коллекции ребер в вашем контроллере (getVertexCollectionByName должен получить X, getEdgeCollectionByName должен получить containsX)

Если вы измените эти вещи, все в порядке :) Просто попробовал на месте.

Небольшое замечание: в Foxx идея состоит в том, что каждое имя коллекции имеет префикс с некоторой информацией о точке монтирования. Причина этого в том, что вы должны иметь возможность устанавливать приложение Foxx несколько раз без конфликта - также несколько приложений могут иметь коллекцию «x» и ожидать, что в ней будут храниться разные вещи. Вот почему у нас есть applicationContext.collectionName :) Я бы посоветовал использовать это, когда вы также называете свои коллекции, связанные с графами! Если вы хотите увидеть, как это работает, я преобразовал ваши фрагменты в простой пример приложения. Вот суть этого:

https://gist.github.com/moonglum/21208befa3ce6227559d

person moonglum    schedule 25.11.2014