diff --git a/js/common/modules/org/arangodb/general-graph.js b/js/common/modules/org/arangodb/general-graph.js index c49bde19b5..4cad2d6eaf 100644 --- a/js/common/modules/org/arangodb/general-graph.js +++ b/js/common/modules/org/arangodb/general-graph.js @@ -471,7 +471,6 @@ var _create = function (graphName, edgeDefinitions) { }; - //////////////////////////////////////////////////////////////////////////////// /// @brief constructor. //////////////////////////////////////////////////////////////////////////////// @@ -487,13 +486,31 @@ var Graph = function(graphName, edgeDefinitions, vertexCollections, edgeCollecti var wrap = wrapCollection(obj); var old_remove = wrap.remove; wrap.remove = function(vertexId, options) { - var myEdges = self._EDGES(vertexId); - myEdges.forEach( - function(edgeObj) { - var edgeId = edgeObj._id; - var edgeCollection = edgeId.split("/")[0]; - if (db[edgeCollection] && db[edgeCollection].exists(edgeId)) { - db[edgeCollection].remove(edgeId); + var graphs = getGraphCollection().toArray(); + var vertexCollectionName = vertexId.split("/")[0]; + graphs.forEach( + function(graph) { + var edgeDefinitions = graph.edgeDefinitions; + if (graph.edgeDefinitions) { + edgeDefinitions.forEach( + function(edgeDefinition) { + var from = edgeDefinition.from; + var to = edgeDefinition.to; + var collection = edgeDefinition.collection; + if (from.indexOf(vertexCollectionName) !== -1 + || to.indexOf(vertexCollectionName) !== -1 + ) { + var edges = db._collection(collection).toArray(); + edges.forEach( + function(edge) { + if (edge._from === vertexId || edge._to === vertexId) { + db._remove(edge._id); + } + } + ); + } + } + ); } } ); @@ -503,6 +520,7 @@ var Graph = function(graphName, edgeDefinitions, vertexCollections, edgeCollecti } return old_remove(vertexId, options); }; + self[key] = wrap; });