我有一个基本架构,用于改变一些看起来像
的数据const schema = new graphql.GraphQLSchema({
mutation: new graphql.GraphQLObjectType({
name: 'Remove',
fields: {
removeUser: {
type: userType,
args: {
id: { type: graphql.GraphQLString }
},
resolve(_, args) {
const removedData = data[args.id];
delete data[args.id];
return removedData;
},
},
},
})
});
环顾谷歌我无法找到需要发送到mutate的示例查询的明确示例。
我试过了
POST - localhost:3000 / graphql?query = {removeUser(id:" 1"){id,name}}
此操作失败并显示错误:
{
"errors": [
{
"message": "Cannot query field \"removeUser\" on type \"Query\".",
"locations": [
{
"line": 1,
"column": 2
}
]
}
]
}
答案 0 :(得分:0)
为了发布来自前端应用程序的请求,建议使用apollo-client
包。假设我想验证用户登录信息:
import gql from 'graphql-tag';
import ApolloClient, {createNetworkInterface} from 'apollo-client';
client = new ApolloClient({
networkInterface: createNetworkInterface('http://localhost:3000/graphql')
});
remove(){
client.mutate({
mutation: gql`
mutation remove(
$id: String!
) {
removeUser(
id: $id
){
id,
name
}
}
`,
variables: {
id: "1"
}
}).then((graphQLResult)=> {
const { errors, data } = graphQLResult;
if(!errors && data){
console.log('removed successfully ' + data.id + ' ' + data.name);
}else{
console.log('failed to remove');
}
})
}
More information about apollo-client
can be found here
您是否尝试使用graphiql
查询和改变架构?
如果您想手动创建POST请求,可能需要尝试以正确的形式构建它:
?query=mutation{removeUser(id:"1"){id, name}}
(Haven没有尝试过自己发帖,如果你成功了,请告诉我,我在使用graphiql
时将其从网址中构建出来)
答案 1 :(得分:0)
您必须明确标记您的突变,即
mutation {
removeUser(id: "1"){
id,
name
}
}
在GraphQL中,如果省略mutation
关键字,它只是发送查询的简写,即执行引擎会将其解释为
query {
removeUser(id: "1"){
id,
name
}
}