Graph 检查节点是否存在,然后在neo4j中继续其余的查询
我有一个端点Graph 检查节点是否存在,然后在neo4j中继续其余的查询,graph,neo4j,cypher,Graph,Neo4j,Cypher,我有一个端点getAlbumsBySerid,可以想象,它返回用户创建的所有相册 我让查询工作,它返回正确的节点: "MATCH (u:User "+user+")", "MATCH (m:User {uuid: '"+userId+"'})", "OPTIONAL MATCH (m)-[:CREATED]->(n:Asset:Album)<-[r:CAN_READ]-()<-[:BELONGS_TO]-(u)", "RETURN DISTINCT collect(n) AS
getAlbumsBySerid
,可以想象,它返回用户创建的所有相册
我让查询工作,它返回正确的节点:
"MATCH (u:User "+user+")",
"MATCH (m:User {uuid: '"+userId+"'})",
"OPTIONAL MATCH (m)-[:CREATED]->(n:Asset:Album)<-[r:CAN_READ]-()<-[:BELONGS_TO]-(u)",
"RETURN DISTINCT collect(n) AS nodes, collect(m) AS user",
"UNION",
"MATCH (m:User {uuid: '"+userId+"'})",
"OPTIONAL MATCH (i:User "+user+")-[f:CREATED]->(n:Asset:Album)",
"RETURN DISTINCT collect(n) AS nodes, collect(m) AS user"
“匹配(u:User”+User+”,
“匹配(m:User{uuid:'”+userId+“})”,
“可选匹配(m)-[:CREATED]->(n:Asset:Album)首先,我希望使用而不是将数据直接连接到字符串中,以防止注入攻击
我认为您需要将前两个MATCH
子句合并为一个:
MATCH (u:User {uuid: {userId}}), (m:User {uuid: {currentUserId}})
这意味着,只有找到该子句中的所有内容,才能得到匹配项
另见
如果这不起作用,您可以首先获取当前用户有权访问的所有相册,然后与给定用户进行匹配(简化查询):
首先,我希望使用而不是将数据直接连接到字符串中,以防止注入攻击
我认为您需要将前两个MATCH
子句合并为一个:
MATCH (u:User {uuid: {userId}}), (m:User {uuid: {currentUserId}})
这意味着,只有找到该子句中的所有内容,才能得到匹配项
另见
如果这不起作用,您可以首先获取当前用户有权访问的所有相册,然后与给定用户进行匹配(简化查询):