neo4j - GraphQL & Neo4j:如何使用突变请求修改属性?
问题描述
我在 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
}
我该怎么做 ?
解决方案
我建议使用可选的匹配并使用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
""")
}
推荐阅读
- excel - 在多个空间上拆分列
- bash - Bash: Masking user input for a password, with * support for backspace and special characters
- java - Java Mail: Inline Image is not shown in email
- javascript - Sending room code from server side to client side - Socket.io, Node.js
- google-chrome - Why does Google Chrome only displays the first page a pdf file?
- python - How to stop a non-responding mainwindow in pyqt5 due to long loops with a push button?
- postgresql - createdb: could not connect to database template1: fatal: password authentication failed for user "user1"
- node.js - how set up expire time while saving data mongodb
- reactjs - react redux:私有路由不渲染布局
- firebase - Firebase Cloud Messaging (FCM) getToken() 无需请求浏览器权限