模拟 graphql 服务器

use*_*979 5 graphql

我正在尝试模拟我的 graphql 服务器,以便当我查询时,它返回模拟数据而不是转到 graphql 服务器。当我对模拟 graphql 运行查询时,我收到了这个错误:

"errors":[{"message":"Syntax Error GraphQL request (1:13) Expected $, found Name \"input\"\n\n1: query login(input: {userName: \"james\" , passWord: \"password\"}

这是我目前的设置:

询问

let query = `query login(input: {userName: "james" , passWord: "password"}){
   login(input: {userName: "james" , passWord: "password"})
}`;
Run Code Online (Sandbox Code Playgroud)

架构

const typeDefs = `
type loginCrendentialsType {
  data: String
}
input loginInputType{
  userName: String!
  passWord: String!
}
type RootQuery {
  login(input: loginInputType): [loginCrendentialsType]
}
schema {
  query: RootQuery
}
`;
Run Code Online (Sandbox Code Playgroud)

嘲笑

const mocks = {
 login: (loginInputType) => ({
   data: mockDB.getUser(loginInputType.userName, loginInputType.passWord)
 })
};
Run Code Online (Sandbox Code Playgroud)

设置

const schema = makeExecutableSchema({
 typeDefs
});

addMockFunctionsToSchema({
 schema,
 mocks,
});

graphql(schema,query).then((result) => {
  console.log("reachedhere  " + JSON.stringify(result));
});
Run Code Online (Sandbox Code Playgroud)

p0k*_*k8_ 2

我认为当你提供输入变量时,它一定是变异而不是查询?

使用变量来存储输入对象并将其分配给$input

let query = `query login($input: {input: {userName: "james" , passWord: "password"} }){
   login(input: $input)
}`;
Run Code Online (Sandbox Code Playgroud)

或者

let query = `query login{
   login(input: {userName: "james" , passWord: "password"})
}`;
Run Code Online (Sandbox Code Playgroud)