neo4j соответствует узлу с неизвестным списком свойств - PullRequest
0 голосов
/ 30 октября 2019

Я динамически строю график, используя merge, чтобы избежать создания дубликатов. У меня есть запрос вроде:

`MERGE(a:${node.type} {id:'${node.id}', label:'${node.label}'}) SET a += $att RETURN a`, {att:node.attributes}

Итак, я знаю тип, идентификатор и метку узла, который я добавляю, но есть также и неизвестный список атрибутов. Я не знаю длины списка или ключей в списке. Мне нужно merge в полном списке атрибутов, но при моем запросе атрибуты узла переписываются каждый раз, когда узел соответствует типу, идентификатору и метке.

Я также пытался:

 MERGE(a:${mergedObject.type} $node) RETURN a`, {node: mergedObject}

, что не удается с Neo4jError: Parameter maps cannot be used in MERGE patterns

Как сопоставить узел в неизвестном списке свойств (длина / ключи)? Я использую neo4j-драйвер модуль. Мне нужно, чтобы весь узел и все его свойства были уникальными.

1 Ответ

2 голосов
/ 30 октября 2019

MERGE требует, чтобы вы жестко закодировали имена свойств, которые вы хотите использовать, поэтому невозможно динамически предоставить свойства для MERGE.

вашего кода node.js может динамически генерировать запрос MERGE, хотя. Но вы должны быть осторожны, чтобы написать свой код node.js таким образом, чтобы избежать Cypher внедрения кода . Один из способов избежать внедрения кода - генерировать жестко закодированные имена свойств, но передавать каждое значение свойства как параметр .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...