Я создаю REST API, который подключается к экземпляру NEO4J. Я использую библиотеку koa-neo4j в качестве основы (https://github.com/assister-ai/koa-neo4j-starter-kit). Я новичок во всех этих технологиях, но благодаря некоторой помощи этого форума у меня есть основная функциональность. Например, приведенный ниже код позволяет мне создать новый узел с меткой «метрика» и установить имя и датуAdded propertis.Передача наборов свойств и узлов в качестве инструкции POST с помощью KOA-NEO4J или 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
Однако я struggl чтобы узнать, как я могу подойти к более сложным примерам. Как я могу обрабатывать ситуации, когда я не знаю, сколько свойств будет добавлено при создании нового узла заблаговременно или когда я хочу создать несколько узлов в одном посту. В идеале я хотел бы передать что-то вроде JSON как часть POST, которая будет содержать все узлы, метки и свойства, которые я хочу создать. Что-то вроде этого возможно? Я попытался использовать следующий запрос Cypher и передать строку JSON в тело POST, но это не сработало.
UNWIND $props AS properties
CREATE (n:metric)
SET n = properties
RETURN n
Я был бы лучше переключения TOTHE Neo4j Rest API вместо протокола болтом и рамки КОА-Neo4j. Из моих исследований я подумал, что лучше использовать BOLT, но я хочу, чтобы API-интерфейс Rest как средний слой между моим передним и задним концом, поэтому я готов изменить его, если это будет проще в долгосрочной перспективе.
Спасибо за помощь!
Спасибо за ваш ввод. Я пробовал ваш код и передал следующий «props = [{metricName:« Test Name », dateCreated:« 02/21/2017 »}]», но я получаю сообщение об ошибке «Параметр, предоставляемый для создания узла, не является Map». Ясно, что я не правильно структурирую «карту» - любые указатели на это? – n4nite
@ n4nite Параметр вашего реквизита должен быть картой, а значение, которое вы хотите использовать в своем запросе, должно быть записью на карте, значение которой представляет собой набор карт. Если мы используем пример киберсама, чтобы использовать параметр '$ prop_collection', ваши реквизиты должны быть:' props = {prop_collection: [{metricName: "Test Name", dateCreated: "02/21/2017"}] } ' – InverseFalcon
Есть ли что-то, что я могу прочитать на картах в Neo4j, так как я не могу заставить это работать и не могу найти много, когда я ищу Google? Я использую примеры и передаю строку «реквизит» как часть моего заявления POST API, но я все еще получаю сообщение об ошибке «Параметр, предоставляемый для создания узла, не является Картой». – n4nite