Невозможно абстрагировать функцию разрешения в определении запроса GraphQL. - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть поле запроса GraphQL, хранящееся в отдельном query / book.js файле:

const {
  GraphQLObjectType,
  GraphQLString,
  GraphQLSchema,
  GraphQLID,
  GraphQLInt,
  GraphQLList,
  GraphQLNonNull,
} = require('graphql');
const Book = require('../../../models/book');
const Author = require('../../../models/author');
const {BookType, AuthorType} = require('../types');

module.exports = {
  type: BookType,
  args: { id: { type: GraphQLID } },
  resolve: (parent, args) => {
    // code to get data from db
    return Book.findById(args.id);
  },
};

Я пытаюсь извлечь функцию разрешения из объекта запроса длялучшая модульность:

const {
  GraphQLObjectType,
  GraphQLString,
  GraphQLSchema,
  GraphQLID,
  GraphQLInt,
  GraphQLList,
  GraphQLNonNull,
} = require('graphql');
const Book = require('../../../models/book');
const Author = require('../../../models/author');
const {BookType, AuthorType} = require('../types');

const resolveAuthor = (parent, args) => {
  // code to get data from db
  return Book.findById(args.id);
};

module.exports = {
  type: BookType,
  args: { id: { type: GraphQLID } },
  resolve: resolveAuthor(parent, args)
};

Тем не менее, выполнение этой команды приводит к ошибке ссылки на предпоследней строке, говорящей, что «родитель» не определен.Что я делаю не так?

1 Ответ

0 голосов
/ 14 сентября 2018

Когда вы говорите

module.exports = { resolve: resolveAuthor(parent, args) };

, этот синтаксис пытается вызвать функцию разрешения и экспортировать возвращаемое значение.Вы не хотите делать это здесь (и не можете, потому что вы не знаете родительский объект или аргументы для каждого вызова);Вы можете просто передать функцию обратно как

module.exports = { resolve: resolveAuthor };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...