Node.js Apollo客户端:未定义变量。收到状态代码400
我正在尝试使用Apollo客户端在GraphQL查询中使用动态变量。我遵循了文档,但Apollo不断给我错误,说我的变量没有定义,最终以状态代码400响应 以下是阿波罗的文件所说的: 变异:(选项?:变异选项)=>承诺 从用户界面触发变异的函数。您可以选择将变量、optimisticResponse、refetchQueries和update in作为选项传递,这将覆盖传递给突变组件的任何道具。该函数返回一个满足您的变异结果的承诺 下面是我试图编写的代码:Node.js Apollo客户端:未定义变量。收到状态代码400,node.js,graphql,apollo-client,Node.js,Graphql,Apollo Client,我正在尝试使用Apollo客户端在GraphQL查询中使用动态变量。我遵循了文档,但Apollo不断给我错误,说我的变量没有定义,最终以状态代码400响应 以下是阿波罗的文件所说的: 变异:(选项?:变异选项)=>承诺 从用户界面触发变异的函数。您可以选择将变量、optimisticResponse、refetchQueries和update in作为选项传递,这将覆盖传递给突变组件的任何道具。该函数返回一个满足您的变异结果的承诺 下面是我试图编写的代码: const fetch = requi
const fetch = require('node-fetch');
const ApolloClient = require('apollo-boost').default;
const gql = require('graphql-tag');
const client = new ApolloClient({
uri: "http://api.domain.com/graphql",
fetch
});
run();
async function run() {
try {
const resp = await client.mutate({
mutation: gql`mutation {
trackPr(id: $id, pr: $pr, title: $title, body: $body, state: $state, merged: $merged) {
id
}
}`,
variables: {
id: 1,
pr: 1,
title: "test title",
body: "test body",
state: "test state",
merged: false
},
});
console.log(resp.data);
} catch(ex) {
console.log(ex);
}
}
然后,我会收到每个变量的错误消息,表示尚未定义该变量:
[GraphQL错误]:消息:未定义变量“$id”,位置:[对象对象],[对象对象],路径:未定义
在每一条错误消息之后,我都会收到一条状态代码为400的最终消息:
[网络错误]:服务器错误:响应未成功:收到状态代码400
变异本身运行良好,没有变量和直接在变异中设置的所有值,但我不知道为什么它认为变量没有定义。操作中使用的任何变量都必须声明为操作定义的一部分,如下所示:
mutation SomeOptionalMutationName ($id: ID!) {
trackPr(id: $id) {
id
}
}
这允许GraphQL根据提供的类型验证您的变量,还可以验证这些变量是否被用来代替正确的输入