Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不';使用curl发布密码时创建的t关系?_Curl_Neo4j_Cypher - Fatal编程技术网

为什么不';使用curl发布密码时创建的t关系?

为什么不';使用curl发布密码时创建的t关系?,curl,neo4j,cypher,Curl,Neo4j,Cypher,我使用curl执行下面的代码(当我真正运行它时,所有内容都在一行上。我在这里分解它,以便更容易阅读)。节点已成功创建,但关系未成功创建。它无法识别节点之间的关系 curl --user neo4j:mypassword -i -H accept:application/json -H content-type:application/json -XPOST http://localhost:7474/db/data/transaction/commit -d '{"statements":[

我使用curl执行下面的代码(当我真正运行它时,所有内容都在一行上。我在这里分解它,以便更容易阅读)。节点已成功创建,但关系未成功创建。它无法识别节点之间的关系

curl --user neo4j:mypassword -i -H accept:application/json -H 
content-type:application/json -XPOST http://localhost:7474/db/data/transaction/commit -d 
'{"statements":[
{"statement":"CREATE (keanu:Actor { name : '\''Keanu Reeves'\''}) return id(keanu)"},
{"statement":"CREATE (chad:Director { name : '\''Chad Stahelski'\''}) return id(chad)"},
{"statement":"CREATE (david:Director { name : '\''David Leitch'\''}) return id(david)"},
{"statement":"CREATE (william:Actor { name : '\''William Dafoe'\''}) return id(william)"},
{"statement":"CREATE (michael:Actor { name : '\''Michael Nyquist'\''}) return id(michael)"},
{"statement":"CREATE (movienew:Movie { title : '\''John Wick'\''}) return id(movienew)"},
{"statement":"CREATE (keanu)-[:ACTS_IN ]->(movienew)"},
{"statement":"CREATE (chad)-[:Directed_IN ]->(movienew)"},
{"statement":"CREATE (david)-[:Directed_IN ]->(movienew)"},
{"statement":"CREATE (william)-[:ACTS_IN ]->(movienew)"},
{"statement":"CREATE (michael)-[:ACTS_IN ]->(movienew)"}
]}'

它无法识别节点之间的关系

我该怎么修


更新:我现在已将代码更改为

curl --user neo4j:mypassword -i -H accept:application/json -H content-type:application/json -XPOST http://localhost:7474/db/data/transaction/commit -d '{"statements":[{"statement":"CREATE (matrix1:Movie { title : '\''The Matrix'\'', year : '\''1999-03-31'\'' }) return id(matrix1)","CREATE (matrix2:Movie { title : '\''The Matrix Reloaded'\'', year : '\''2003-05-07'\'' }) return id(matrix2)","CREATE (matrix3:Movie { title : '\''The Matrix Revolutions'\'', year : '\''2003-10-27'\'' }) return id(matrix3)","CREATE (keanu:Actor { name : '\''Keanu Reeves'\''}) return id(keanu)","CREATE (laurence:Actor { name : '\''Laurence Fishburne'\''})","CREATE (carrieanne:Actor { name : '\''Carrie-Anne Moss'\''})","CREATE (keanu)-[:ACTS_IN { role : '\''Neo'\'' }]->(matrix1)","CREATE (keanu)-[:ACTS_IN { role : '\''Neo'\'' }]->(matrix2)","CREATE (keanu)-[:ACTS_IN { role : '\''Neo'\'' }]->(matrix3)","CREATE (laurence)-[:ACTS_IN { role : '\''Morpheus'\'' }]->(matrix1)","CREATE (laurence)-[:ACTS_IN { role : '\''Morpheus'\'' }]->(matrix2)","CREATE (laurence)-[:ACTS_IN { role : '\''Morpheus'\'' }]->(matrix3)","CREATE (carrieanne)-[:ACTS_IN { role : '\''Trinity'\'' }]->(matrix1)","CREATE (carrieanne)-[:ACTS_IN { role : '\''Trinity'\'' }]->(matrix2)","CREATE (carrieanne)-[:ACTS_IN { role : '\''Trinity'\'' }]->(matrix3)"}]}'
但随后出现错误“无法反序列化请求:意外字符(','(代码44))”


更新:根据接受的答案,我复制了准确的格式并将其应用于另一个程序,但这次我收到了以下错误:

{“结果”:[],“错误”:[{“代码”:“Neo.ClientError.Request.InvalidFormat”,“消息”:“无法反序列化请求:意外字符('..(代码46)):应在[Source:HttpInputOverHTTP@442ac29b;行:1,列:3]“}]}

我的代码是:

curl --user neo4j:mypassword -i -H accept:application/json \
-H content-type:application/json \
-XPOST http://localhost:7474/db/data/transaction/commit \
-d @- << EOF
{
    "statements":
    [
      {
       "statement":
        "CREATE (matrix1:Movie { title : 'The Matrix', year : '1999-03-31'})
         CREATE (matrix2:Movie { title : 'The Matrix Reloaded', year : '2003-05-07'})
         CREATE (matrix3:Movie { title : 'The Matrix Revolutions', year : '2003-10-27'})
         CREATE (keanu:Actor { name : 'Keanu Reeves'})
         CREATE (laurence:Actor { name : 'Laurence Fishburne'})
         CREATE (carrieanne:Actor { name : 'Carrie-Anne Moss'})
         CREATE (keanu)-[:ACTS_IN { role : 'Neo' }]->(matrix1)
     CREATE (keanu)-[:ACTS_IN { role : 'Neo' }]->(matrix2)
     CREATE (keanu)-[:ACTS_IN { role : 'Neo' }]->(matrix3)
     CREATE (laurence)-[:ACTS_IN { role : 'Morpheus' }]->(matrix1)
     CREATE (laurence)-[:ACTS_IN { role : 'Morpheus' }]->(matrix2)
     CREATE (laurence)-[:ACTS_IN { role : 'Morpheus' }]->(matrix3)
     CREATE (carrieanne)-[:ACTS_IN { role : 'Trinity' }]->(matrix1)
     CREATE (carrieanne)-[:ACTS_IN { role : 'Trinity' }]->(matrix2)
     CREATE (carrieanne)-[:ACTS_IN { role : 'Trinity' }]->(matrix3) 
     RETURN *"
  }
]
}
EOF
curl——用户neo4j:mypassword-i-H accept:application/json\
-H内容类型:应用程序/json\
-邮政编码http://localhost:7474/db/data/transaction/commit \

-d@-单独的语句对变量有单独的作用域。在下一个语句中,前面的任何变量都不可用

这就是为什么在每个关系创建语句中,您使用的变量都是全新的,因此每个关系创建语句都会创建由给定关系连接的三个新的空白节点


为了避免这种情况,您需要在一条语句中运行creation查询的所有行(并且至少在最后一行之前消除这些返回)。

我认为最好的方法是删除一堆不必要的记号,以便您可以更好地看到您正在做的事情。正如@inversefalcon所说,当您执行每个语句时,您会失去上下文。您希望将其全部保存在一个中,以便在最后创建关系时保留每个
CREATE
中的标识符

您应该能够按原样剪切和粘贴此块

curl --user neo4j:password -i -H accept:application/json \
  -H content-type:application/json \
  -XPOST http://localhost:7474/db/data/transaction/commit \
  -d @- << END_OF_CYPHER
{
  "statements":
  [
    {
      "statement":
        "CREATE (keanu:Actor { name : 'Keanu Reeves'})
         CREATE (chad:Director { name : 'Chad Stahelski'})
         CREATE (david:Director { name : 'David Leitch'})
         CREATE (william:Actor { name : 'William Dafoe'})
         CREATE (michael:Actor { name : 'Michael Nyquist'})
         CREATE (movienew:Movie { title : 'John Wick'})
         CREATE (keanu)-[:ACTS_IN ]->(movienew)
         CREATE (chad)-[:Directed_IN ]->(movienew)
         CREATE (david)-[:Directed_IN ]->(movienew)
         CREATE (william)-[:ACTS_IN ]->(movienew)
         CREATE (michael)-[:ACTS_IN ]->(movienew)
         RETURN *"
     }
  ]
}
END_OF_CYPHER
curl——用户neo4j:password-i-H accept:application/json\
-H内容类型:应用程序/json\
-邮政编码http://localhost:7474/db/data/transaction/commit \

-d-我更新了我的帖子-我尝试了你的建议,但出现了一个错误。。。你能告诉我怎么了吗?对于一条语句,不要用逗号分隔单独的字符串。这是一个字符串,没有返回(至少直到最后),子句之间没有逗号。非常感谢!这真漂亮。这个EOF代表什么?它只是一个标签,以便shell知道何时读取输入的末尾。EOF只是传统的文件结尾。我明白了。我用这种格式解决了另一个问题,但得到了一条错误消息(代码显示在我上面的帖子中)。你能让我知道为什么这是不正确的吗?看起来不错-我猜是控制字符还是什么?我在更改密码时剪切并粘贴了你的密码块,它在我的3.1.1本地社区版上运行。