Предупреждение AUTH_DISABLED при попытке MERGE внутри apoc.when () - PullRequest
0 голосов
/ 05 сентября 2018

Neo4j 3.4. Я пытаюсь вставить новый узел (a) во временную шкалу между (t) и (n). Каждый узел времени имеет метку времени. Моя проблема в том, что узел (t) иногда имеет ту же метку времени, что и мой новый узел (a). Я использую apoc.when, чтобы определить, не совпадает ли это с тем, чтобы сделать вставку, иначе ничего не делать.

MATCH (t:time)-[r:next*1]->(n:time) WHERE n.time > 1528601855959 AND t.time <= 1528601855959 
WITH n,t,r
CALL apoc.when(
    (t.time <> 1528601855959),
    'UNWIND r as rd DELETE rd WITH t,n MERGE (t)-[:next]->(a:time{time:1528601855959, src:"time"})-[:next]->(n)','', {t:t, r:r, n:n}) YIELD value as rr
RETURN t,n

У меня есть две проблемы, которые я не могу решить: Сначала сообщение об ошибке:

Neo.ClientError.Security.Forbidden: операции записи запрещены для AUTH_DISABLED с FULL, ограниченным READ.

Я попытался найти этот параметр в конфигурационных файлах, но безуспешно. Что-то не так с кодом или я могу просто изменить настройку конфигурации?

Вторая проблема является базовой и может работать после исправления проблемы с AUTH - как я могу вернуть (a), когда / если она создана? - т.е. RETURN a,t,n.

https://neo4j -contrib.github.io / Neo4j-Апок-процедуры / # _ when_procedures

Спасибо!

1 Ответ

0 голосов
/ 05 сентября 2018

Процедура apoc.when выполняется только в режиме чтения. Для записи используйте процедуру apoc.do.when, а для получения добавленного узла используйте RETURN:

MATCH (t:time)-[r:next*1]->(n:time) WHERE n.time > 1528601855959 AND t.time <= 1528601855959 
WITH n, t, r
CALL apoc.do.when(
  t.time <> 1528601855959,
  '  UNWIND r as rd DELETE rd WITH t,n 
     MERGE (t)-[:next]->(a:time {time: 1528601855959, src: "time"})-[:next]->(n) RETURN a',
  '', {t: t, r: r, n: n}) YIELD value AS rr
RETURN t, n, rr.a AS a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...