Node.js Neo4j将数据序列化为JSON
我正在尝试使用Node.js构建一个RESTAPI,它用于连接Neo4j Db 随着端点和图形复杂性的增加,编写和维护大量长密码查询变得越来越困难 我在服务填充的JSON对象时遇到了一些困难,这些对象应该包含一些与其他节点的关系 下面是对for GET/api/me端点的查询Node.js Neo4j将数据序列化为JSON,node.js,rest,serialization,neo4j,cypher,Node.js,Rest,Serialization,Neo4j,Cypher,我正在尝试使用Node.js构建一个RESTAPI,它用于连接Neo4j Db 随着端点和图形复杂性的增加,编写和维护大量长密码查询变得越来越困难 我在服务填充的JSON对象时遇到了一些困难,这些对象应该包含一些与其他节点的关系 下面是对for GET/api/me端点的查询 MATCH (user:User) WHERE user.uuid = {userId} OPTIONAL MATCH (user)-[:PROFILE_IMAGE]->(profileImage:Image) OP
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{.*}}
当连接到用户的节点可以有不同的标签时,情况会变得更糟。在这种情况下;我应该在cypher查询中编写一个switch case表达式,以正确填充感觉不正确的相关字段
对此有什么建议吗?您可以做的一件事是使用模式理解来处理可选匹配并在一个步骤中收集。只是一个小小的句法改进
MATCH (user:User) WHERE user.uuid = {userId}
OPTIONAL MATCH (user)-[:PROFILE_IMAGE]->(profileImage:Image)
OPTIONAL MATCH (user)-[:HEADER_IMAGE]->(headerImage:Image)
WITH user, profileImage, headerImage,
[(user)-[:OWNS]->(productToEmbed:Product)-[:TYPE]->(productType:ProductType) |
productToEmbed {.*, type: productType.name}] as products
RETURN user{.*, products, profileImage, headerImage}
对于其他具有不同标签和字段的节点,您能否提供一个示例