GraphQL&;Neo4j:如何使用变异请求修改属性?

GraphQL&;Neo4j:如何使用变异请求修改属性?,neo4j,graphql,grandstack,Neo4j,Graphql,Grandstack,我在Neo4j数据库中有文章节点。他的一个属性是布尔值:“saved:false”。 此节点的属性名称为“已保存” 我有一个React界面,我希望用户能够将文章保存为收藏夹。 因此,我想做的是,当他们想要保存文章时,将属性“saved”更改为true;当他们想要取消收藏时,将属性设置为false 这个过程可以通过graphql请求完成,但我不知道如何编写修改节点属性的请求 示例:用户希望保存id为1的文章,因此他单击按钮“favorite”,文章节点属性id为1,节点属性“saved”从fals

我在Neo4j数据库中有文章节点。他的一个属性是布尔值:“saved:false”。 此节点的属性名称为“已保存”

我有一个React界面,我希望用户能够将文章保存为收藏夹。 因此,我想做的是,当他们想要保存文章时,将属性“saved”更改为true;当他们想要取消收藏时,将属性设置为false

这个过程可以通过graphql请求完成,但我不知道如何编写修改节点属性的请求

示例:用户希望保存id为1的文章,因此他单击按钮“favorite”,文章节点属性id为1,节点属性“saved”从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 (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
    """)
}

你好,谢谢我要试试