Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Node.js Neo4j将数据序列化为JSON_Node.js_Rest_Serialization_Neo4j_Cypher - Fatal编程技术网

Node.js Neo4j将数据序列化为JSON

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

我正在尝试使用Node.js构建一个RESTAPI,它用于连接Neo4j Db

随着端点和图形复杂性的增加,编写和维护大量长密码查询变得越来越困难

我在服务填充的JSON对象时遇到了一些困难,这些对象应该包含一些与其他节点的关系

下面是对for 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{.*}}
当连接到用户的节点可以有不同的标签时,情况会变得更糟。在这种情况下;我应该在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}
对于其他具有不同标签和字段的节点,您能否提供一个示例