Ich erstelle eine REST-API, die eine Verbindung zu einer NEO4J-Instanz herstellt. Ich verwende die koa-neo4j-Bibliothek als Basis (https://github.com/assister-ai/koa-neo4j-starter-kit). Ich bin ein Anfänger bei all diesen Technologien, aber dank einiger Hilfe von diesem Forum habe ich die grundlegende Funktionalität funktioniert. Der folgende Code erlaubt mir beispielsweise, einen neuen Knoten mit der Bezeichnung "metric" zu erstellen und den Namen und dateAdded propertis zu setzen.Übergabe von Eigenschaften und Knoten als POST-Anweisung mit KOA-NEO4J oder BOLT
URL:
/metric?metricName=Test&dateAdded=2/21/2017
index.js
app.defineAPI({
method: 'POST',
route: '/api/v1/imm/metric',
cypherQueryFile: './src/api/v1/imm/metric/createMetric.cyp'
});
createMetric.cyp“
CREATE (n:metric {
name: $metricName,
dateAdded: $dateAdded
})
return ID(n) as id
Ich bin aber Struggl Ich möchte wissen, wie ich kompliziertere Beispiele angehen kann. Wie kann ich mit Situationen umgehen, wenn ich nicht weiß, wie viele Eigenschaften hinzugefügt werden, wenn ich vorher einen neuen Knoten erstelle oder wenn ich mehrere Knoten in einer einzigen Post-Anweisung erstellen möchte. Idealerweise würde ich gerne etwas wie JSON als Teil des POST übergeben, das alle Knoten, Beschriftungen und Eigenschaften enthalten würde, die ich erstellen möchte. Ist so etwas möglich? Ich versuchte, die folgende Cypher-Abfrage zu verwenden und eine JSON-Zeichenfolge in dem POST-Textkörper zu übergeben, aber es funktionierte nicht.
UNWIND $props AS properties
CREATE (n:metric)
SET n = properties
RETURN n
Würde ich besser Schalt TO THE Neo4j REST-API anstelle des BOLT-Protokoll und dem KOA-Neo4j Rahmen sein. Aus meiner Forschung heraus dachte ich, es wäre besser, BOLT zu verwenden, aber ich möchte eine Rest-API als die mittlere Schicht zwischen meinem Vorder- und Hinterende haben, so dass ich bereit bin, umzuschalten, wenn dies auf längere Sicht einfacher sein wird.
Danke für die Hilfe!
Vielen Dank für Ihre Eingabe. Ich habe Ihren Code ausprobiert und die folgenden "Requisiten = [{Metrikname:" Testname ", dateCreated:" 21.02.2017 "}]" übergeben, aber ich erhalte den Fehler "Parameter für die Knotenerstellung ist keine Karte". Klar, ich strukturiere die "Karte" nicht richtig - irgendwelche Hinweise darauf? – n4nite
@ n4nite Ihr Requisitenparameter muss eine Map sein, und der Wert, den Sie in Ihrer Abfrage verwenden möchten, sollte ein Eintrag in der Map sein, deren Wert eine Sammlung von Maps ist. Wenn wir das Beispiel von cybersam verwenden, müssten Ihre Requisiten den '$ prop_collection' Parameter verwenden:' reps = {prop_collection: [{metricName: "Test Name", dateCreated: "21.02.2017"}] } ' – InverseFalcon
Gibt es irgendwo, dass ich auf Karten in Neo4j lesen kann, wie ich es nicht zur Arbeit bringen kann und nicht viel finde, wenn ich Google suche? Ich benutze die Beispiele und übergebe die "Requisiten" Zeichenfolge als Teil meiner POST-Anweisung an die API, aber ich bekomme immer noch einen Fehler, dass "Parameter zur Knotenerstellung keine Karte ist". – n4nite