Parameters 如何构造用于在nodejs中传递参数的cypher查询
我需要能够在neo4j中创建或更新节点。我正在使用NodeJS 我正在尝试使用参数来实现这一点 我需要构造一个密码查询,如Parameters 如何构造用于在nodejs中传递参数的cypher查询,parameters,neo4j,cypher,Parameters,Neo4j,Cypher,我需要能够在neo4j中创建或更新节点。我正在使用NodeJS 我正在尝试使用参数来实现这一点 我需要构造一个密码查询,如 MERGE (user:Person:User {email: {props}.email} ) ON CREATE user = {props} SET user.created = timestamp() ON MATCH SET user.lastSeen = timestamp() RETURN user' 我有一个用查询参数构造的节点 node={prop
MERGE (user:Person:User {email: {props}.email} )
ON CREATE user = {props} SET user.created = timestamp()
ON MATCH SET user.lastSeen = timestamp()
RETURN user'
我有一个用查询参数构造的节点
node={props:{name:'shekar',email:'shekar@abc.com',age:10}}
如何构造密码查询
我正试图像这样构造密码
cypherQuery='MERGE (user:Person:User {email: ' + node.props.email + '})
ON CREATE user = ' + node.props + ' SET user.created = timestamp()
ON MATCH SET user.lastSeen = timestamp()
RETURN user';
我得到这个错误:
errorError: Invalid input '@': expected an identifier character, node labels, a property map, a relationship pattern, '(', '.', '[', "=~", IN, IS, '*', '/', '%', '^', '+', '-', '<', '>', "<=", ">=", '=', "<>", "!=", AND, XOR, OR, ',' or '}' (line 1, column 40)
"MERGE (user:Person:User {email: ctippur@abc.com}) ON CREATE user = [object Object] SET user.created = timestamp() ON MATCH SET user.lastSeen = timestamp() RETURN user"
errorError:无效输入“@”:应为标识符字符、节点标签、属性映射、关系模式“(”、“.”、“[”、“=~”、IN、IS、“*”、“/”、“%”、“^'、“+”、“-”、“=”、“=”、“!=”、和、XOR、或“、”或“}”(第1行,第40列)
“合并(用户:个人:用户{电子邮件:ctippur@abc.com})在创建时user=[object object]SET user.created=timestamp()在匹配时SET user.lastsseen=timestamp()返回用户“
- 谢卡尔
... {email: "' + node.props.email + '"} ...
更多信息,请参见此处的错误声明:
errorError:…在创建用户时=[object object]在匹配集用户时设置用户。在匹配集用户时创建=时间戳()
你也与用户有一些问题-它只是在电子邮件之后,所以你现在看不到它
我建议在将其传递到查询中之前对其进行字符串化:
CREATE user = ' + (JSON.stringify(node.props) + '
同样在这里,检查引号
作为一般方法,我建议查看Micheal Hunger的答案。您必须用双引号写电子邮件,否则Cypher不会将其作为字符串:
... {email: "' + node.props.email + '"} ...
更多信息,请参见此处的错误声明:
errorError:…在创建用户时=[object object]在匹配集用户时设置用户。在匹配集用户时创建=时间戳()
你也与用户有一些问题-它只是在电子邮件之后,所以你现在看不到它
我建议在将其传递到查询中之前对其进行字符串化:
CREATE user = ' + (JSON.stringify(node.props) + '
同样在这里,检查引号
作为一般方法,我建议查看Micheal Hunger的答案。您必须用双引号写电子邮件,否则Cypher不会将其作为字符串:
... {email: "' + node.props.email + '"} ...
更多信息,请参见此处的错误声明:
errorError:…在创建用户时=[object object]在匹配集用户时设置用户。在匹配集用户时创建=时间戳()
你也与用户有一些问题-它只是在电子邮件之后,所以你现在看不到它
我建议在将其传递到查询中之前对其进行字符串化:
CREATE user = ' + (JSON.stringify(node.props) + '
同样在这里,检查引号
作为一般方法,我建议查看Micheal Hunger的答案。您必须用双引号写电子邮件,否则Cypher不会将其作为字符串:
... {email: "' + node.props.email + '"} ...
更多信息,请参见此处的错误声明:
errorError:…在创建用户时=[object object]在匹配集用户时设置用户。在匹配集用户时创建=时间戳()
你也与用户有一些问题-它只是在电子邮件之后,所以你现在看不到它
我建议在将其传递到查询中之前对其进行字符串化:
CREATE user = ' + (JSON.stringify(node.props) + '
同样在这里,检查引号
作为一般方法,我建议看到Micheal Hunger的答案。首先不要这样做。 Cypher完全支持作为查询一部分使用的named。然后,参数值作为map/json对象传递给查询执行 就像你在问题的第一部分使用的。不知道你为什么在问题的第二部分放弃这个
cypherQuery='
MERGE (user:Person:User {email: {props}.email})
ON CREATE SET user = {props}, user.created = timestamp()
ON MATCH SET user.lastSeen = timestamp()
RETURN user';
params = {props: {email: "foo@bar.com", name:"A name"}}
首先不要这样做。 Cypher完全支持作为查询一部分使用的named。然后,参数值作为map/json对象传递给查询执行 就像你在问题的第一部分使用的。不知道你为什么在问题的第二部分放弃这个
cypherQuery='
MERGE (user:Person:User {email: {props}.email})
ON CREATE SET user = {props}, user.created = timestamp()
ON MATCH SET user.lastSeen = timestamp()
RETURN user';
params = {props: {email: "foo@bar.com", name:"A name"}}
首先不要这样做。 Cypher完全支持作为查询一部分使用的named。然后,参数值作为map/json对象传递给查询执行 就像你在问题的第一部分使用的。不知道你为什么在问题的第二部分放弃这个
cypherQuery='
MERGE (user:Person:User {email: {props}.email})
ON CREATE SET user = {props}, user.created = timestamp()
ON MATCH SET user.lastSeen = timestamp()
RETURN user';
params = {props: {email: "foo@bar.com", name:"A name"}}
首先不要这样做。 Cypher完全支持作为查询一部分使用的named。然后,参数值作为map/json对象传递给查询执行 就像你在问题的第一部分使用的。不知道你为什么在问题的第二部分放弃这个
cypherQuery='
MERGE (user:Person:User {email: {props}.email})
ON CREATE SET user = {props}, user.created = timestamp()
ON MATCH SET user.lastSeen = timestamp()
RETURN user';
params = {props: {email: "foo@bar.com", name:"A name"}}
Michael Hunger从参数处理的角度来看是正确的,但您的具体问题是,当您在电子邮件地址中连接时,您没有用引号括起来-因此它被输入为{email:citippur@abc.com...而不是{电子邮件:citippur@abc.com"从参数处理的角度来看,Michael Hunger是正确的,但您的具体问题是,当您在电子邮件地址中连接时,您没有用引号括起来-因此它被输入为{email:citippur@abc.com...而不是{电子邮件:citippur@abc.com"从参数处理的角度来看,Michael Hunger是正确的,但您的具体问题是,当您在电子邮件地址中连接时,您没有用引号括起来-因此它被输入为{email:citippur@abc.com...而不是{电子邮件:citippur@abc.com"从参数处理的角度来看,Michael Hunger是正确的,但您的具体问题是,当您在电子邮件地址中连接时,您没有用引号括起来-因此它被输入为{email:citippur@abc.com...而不是{电子邮件:citippur@abc.com"…整个Neo4j网站最近似乎被洗牌了。博客和帖子上的很多断开的链接。整个Neo4j网站最近似乎被洗牌了。很多断开的链接