2015-12-30 7 views
0

Мне нужна помощь, чтобы обновить отношение во время выполнения.Отношение обновления во время выполнения

У меня есть этот случай использования:

Я создал граф со следующими коллекциями: - А (VertexCollection) - В (VertexCollection) - Е (EdgeCollection) с соотношением (А -> В)

в runtme, используя приложение Foxx, я создаю новую коллекцию (VertexCollection C), и мне нужно обновить EdgeCollection следующим соотношением (A -> [B, C]).

Есть ли способ обновить отношение во время выполнения?

Благодаря передовой, Peter

+0

Я не уверен, что правильно понял ваш вопрос: Является ли коллекция C или вершиной в коллекции? И что вы подразумеваете под «отношением (A -> [B, C])»? Вы хотите, чтобы сборники ребер содержали ребра из вершин в A в вершины в B и C? –

+0

@ MaxNeunhöffer да. –

+0

Работали ли ответы на вас? если да, можете ли вы отметить лучших из них как «принятых»? Если нет, чего не хватает? – dothebart

ответ

2

создаются новые коллекции Фокса с

var db = require("internal").db; 
var C = db._create("C"); 

коллекция ребер Е может содержать ребра с в произвольных коллекций вершин, вы создаете новый край в Е с:

var edge = E.insert("A/xyz", "C/abc", {"someData":12}); 

создать ребро из вершины с _key «А» в А до вершины с _key «ABC» в C, скажу.

Ответит ли это на ваш вопрос?

+0

10x для вашего ответа. Возможно, используя этот метод, я теряю функциональность графика. Что вы думаете об этом? Я думаю, что, используя веб-интерфейс arango, я не могу создать грань между A-> C –

+0

. Интерфейс web-интерфейса и js-сервер проверяет, соответствует ли новый край ['edge definition'] (https://docs.arangodb.com /devel/Glossary/index.html#edge_definition) вашего определения графика. Поэтому, если это не разрешает отношения между 'A' и' C', вам не разрешается создавать его. – dothebart

+0

Есть ли где-нибудь полный пример контроллера Foxx, демонстрирующий, что сделано в этом ответе? В частности, мне интересно, как получить ссылку на кросс-сборник E? Уже я успешно пробовал создавать регулярные сборные документы, поддерживаемые моделями и репозиториями, как описано в документации и демонстрациях Foxx, но я все еще не в тему о том, как создать конечную точку контроллера для установления связей между вершинами; я использую схемы моделей и репозитории для этого или, может быть, просто использовать graph.relation.save (...) (от require ("org/arangodb/general-graph")) напрямую? –

2

В руководстве ArangoDB в разделе Modify a graph definition during runtime следующие способы модификации определения краев во время выполнения, показаны:

Добавление нового определения края к существующему графа:

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

/* load existing graph by name */ 
var graph = graph_module._graph("myGraph"); 

/* add a relation for edge collection myEC2, with vertices 
    between collections myVC1 and myVC3 */ 
var defs = graph_module._relation("myEC2", ["myVC1"], ["myVC3"]); 

/* update the existing graph's definition */ 
graph._extendEdgeDefinitions(defs); 

разделе Изменение определение существующего края в существующем графе:

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

/* load existing graph by name */ 
var graph = graph_module._graph("myGraph"); 

/* update the relation for edge collection myEC2, with vertices 
    between collections myVC23 and [ myVC42, myVC99 ] */ 
var defs = graph_module._relation("myEC2", ["myVC23"], ["myVC42", "myVC99"]); 

/* update the existing graph's definition */ 
graph._editEdgeDefinitions(defs); 
Смежные вопросы