2017-09-16 1 views
0

Ich baue eine Website, wo Benutzer Graphen Daten eingeben, die dann mit cytoscape.js gerendert wird.Handle Fehler mit cytoscape.js

Vorausgesetzt, dass dies durch Benutzerdaten gesichert wird, kann es Fälle geben, in denen ungültige Daten eingegeben werden, insbesondere Kanten mit fehlenden Zielen. Ich möchte diese Daten erfassen und sie dem Benutzer präsentieren, damit sie die Fehler beheben können.

Derzeit erhalte ich diesen Fehler in den Protokollen, aber ich kann nicht herausfinden, wie die Daten erfasst werden.

Can not create edge `TableOfBooks>att` with nonexistant target `att` 

Ich habe versucht, in einem Versuch, die Cytoscape Konstruktor Einwickeln ... fangen ... Block, aber es scheint nicht, den Fehler zu kontrollieren zu sein.

try { 
    var cy = cytoscape(...); 
} catch(err) { 
    console.log("ERROR: " + err); 
} 

Wie kann ich über den Fang diese Fehler gehen?

Antwort

0

Das ist nur eine Warnung in der Konsole. Es ist keine Ausnahme vom Typ Error. Im Allgemeinen wirft Cytoscape keine Ausnahmen für ungültige JSON-Graphen. Es enthält gültige Einträge, es warnt Sie vor ungültigen Einträgen und es wird fortgesetzt, damit der Entwickler etwas überprüfen kann.

Cytoscape muss mehrere Gruppen ansprechen, darunter unerfahrene Wissenschaftler und erfahrene Programmierer. Wir haben festgestellt, dass Wissenschaftler zu leicht auf das Tool verzichten würden, wenn sie eine Ausnahme für kleine JSON-Fehler im Graphen erhalten. Ausnahmen sind also keine Nichtstarter.

Wenn Sie wirklich Ausnahmen auslösen möchten, könnten Sie das Hinzufügen eines umschaltbaren Flags für das Auslösen von Ausnahmen in einem PR durch Warnungen überprüfen. Ab heute gehen alle diese Nachrichten durch error() oder warning() in /util, so dass Sie werfen dort hinzufügen könnten.

Cytoscape führt keine Validierung der Benutzereingabe durch. Das ist generell Sache der App, vor allem weil sie Geschäftslogik enthalten kann.

+0

Danke. Ich habe am Ende alles durch graph.js laufen lassen, um den Graphen tatsächlich zu erfassen und zyklische Erkennung usw. durchzuführen, und dann die Scheitelpunkte und Kanten zur Verwendung in Cytoscape zu exportieren. Dies löst meinen Anwendungsfall zumindest. – Syddraf