GraphQL] Тип [] должен быть типом вывода, но получено: undefined

У меня проблемы со ссылкой на другие GraphQLObjectType внутри GraphQLObjectType. Я получаю следующую ошибку:

"message": "Типом getBooks.stores должен быть Тип вывода, но получено: undefined."

Я думал, что использование решения внутри books.stores поможет решить проблему, но это не так. Кто-нибудь может мне помочь?

Код

var express = require('express');
var graphqlHTTP = require('express-graphql');
var graphql = require('graphql');

var { buildSchema, GraphQLSchema, GraphQLObjectType,GraphQLString,GraphQLList } = require('graphql');

var books = new GraphQLObjectType({
  name:'getBooks',
  fields: {
    isbn: { type: GraphQLString},
    stores: {
      type: stores,
      resolve: function(){
        var store = [];
        store.storeName = "this will contain the name of a shop";
        return store;
      }
    }
  }
});

var stores = new GraphQLObjectType({
  name:'storeList',
  fields: {
    storeName: { type: GraphQLString}
  }
});


var queryType = new GraphQLObjectType({
  name: 'Query',
  fields: {
    books: {
      type: books,
      // `args` describes the arguments that the `user` query accepts
      args: {
        id: { type: new GraphQLList(GraphQLString) }// graphql.GraphQLStringj
      },
      resolve: function (_, {id}) {
        var data = [];
        data.isbn = '32131231';
        return data;
      }
    }
  }
});

var schema = new GraphQLSchema({query: queryType});

var app = express();
app.use('/graphql', graphqlHTTP({
  schema: schema,
  graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at localhost:4000/graphql');

person Elvira    schedule 22.01.2018    source источник


Ответы (2)


Или вы можете просто сделать поле типом функции, чтобы оно могло заключать отношения типов. Например

fields: () => ({

  //Enter Your Code

})
person Yashika Sorathia    schedule 11.06.2019
comment
Кроме того, функция стрелки позволяет это, поэтому вам не нужно беспокоиться о порядке типа магазина. Кроме того, это позволит вам модулировать ваши схемы, поэтому, если ваше приложение станет большим, будет проще искать определенные схемы в определенной папке / файлах. - person hellomello; 30.01.2020

Он не мог найти магазины, потому что он был определен после книг. Поэтому я поместил код магазина перед книгами.

person Elvira    schedule 22.01.2018