问题描述
我在 Neo4j 数据库中有文章节点。他的属性之一是布尔值:“保存:假”。 此节点的属性名称为“已保存”。
我有一个 React 界面,我希望用户能够将文章保存为收藏夹。 所以我想做的是当他们想要保存一篇文章时将“保存”属性更改为true,或者当他们想要取消收藏时将其设置为false。
这个过程可以通过 graphql 请求完成,但我不知道如何编写修改节点属性的请求。
示例:用户想要保存 id = 1 的文章,因此他点击了“收藏夹”按钮,文章节点属性 id = 1,节点属性“已保存”从 false 变为 true。
type Mutations {
saved(article:ID! director:ID!) : ??? (string ?)
@cypher(statement:"MATCH (a:Article {id: $id,saved:$saved})
SET a.saved += true ")
}
schema {
mutations: Mutations
}
我该怎么做?
解决方法
我建议使用 optional match 并使用 SET
。
OPTIONAL MATCH (a:Article {id:$id,saved:$saved})
SET a.saved = true
WITH a IS NOT NULL AS found
RETURN found
这里我返回一个布尔值来表示节点是否匹配,因此设置。在这里使用布尔值来减少发回的数据量,但您也可以轻松地返回节点。
type Mutations {
saved(article: ID! director: ID!): Boolean @cypher(statement:"""
OPTIONAL MATCH (a:Article {id:$id,saved:$saved})
SET a.saved = true
WITH a IS NOT NULL AS found
RETURN found
""")
}