2
我正在尝试使用Node.js构建休息API,它使用Neo4j-Bolt-Driver连接到Neo4j-Db。随着终端和图形的复杂性不断增长,编写和维护大量长Cypher查询变得越来越困难。Neo4j将数据序列化为JSON
我有一些困难,以填充JSON对象应该包含一些关系到其他节点。
下面您会看到针对GET/api/me端点的查询。
MATCH (user:User) WHERE user.uuid = {userId}
OPTIONAL MATCH (user)-[:PROFILE_IMAGE]->(profileImage:Image)
OPTIONAL MATCH (user)-[:HEADER_IMAGE]->(headerImage:Image)
OPTIONAL MATCH (user)-[:OWNS]->(productToEmbed:Product)-[:TYPE]->(productType:ProductType)
WITH user, COLLECT(productToEmbed{.*, type: productType.name }) AS products
RETURN user{.*, products: products, profileImage: profileImage{.*}, headerImage: headerImage{.*}}
当连接到用户的节点可以具有不同的标签时,情况会变得更糟。在这种情况下;我应该在密码查询中编写一个switch case表达式来正确地填充不恰当的相关字段。
对此有何建议?