Неизвестные аргументы в Graphql.js
Я запускаю простой код graphql, используя аргумент с помощью express-graphql. Но graphiql показывает сообщение об ошибке "Неизвестный аргумент \" возраст \ "в поле" лица "типа \" Запрос \ ".
Это мой код
var express = require('express');
var graphqlHTTP = require('express-graphql');
var {buildSchema } = require('graphql');
var schema = buildSchema(`
type Query{
hello: String
persons: [Person]
}
type Person{
name: String
age: Int
}
`);
var root = {
hello: () => 'Hello World',
persons: (args, context, info) => {
console.log(context);
console.log(args);
//Add args
const {name, age} = args;
//Add filter
return [
{ name: "kim", age:20},
{ name: "lee", age:30},
{ name: "yoo", age:40},
].filter((person)=>{
if(!name && !age){return true;}
if(!age && name && person.name === name){ return true;}
if(!name && age && person.age === age){ return true;}
if(name && age && person.name === name && person.age ===
age){return true;}
return false;
});
}
};
var app = express();
var session = {id: "1001", expires: 20000};
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
context: session,
graphiql: true,
}));
app.listen (4000, ()=> console.log('Now browse to
localhost:4000/graphql'));
Я ожидал, если я сделаю запрос, как это.
query{
persons(age: 30){
name
age
}
}
тогда покажи данные, а не ошибку.
1 ответ
Решение
Вам нужно исправить схему запроса! Ваш запрос требует ввода, и это должно быть так:
var schema = buildSchema(`
type Query{
hello: String
persons(age: Int, name: String): [Person]
}
type Person{
name: String
age: Int
}
`);