मेरे पास एक अलग queries/book.js फ़ाइल में संग्रहीत एक GraphQL क्वेरी फ़ील्ड है:

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)
};

हालाँकि, ऐसा करने से "पैरेंट" परिभाषित नहीं है, यह कहते हुए अंतिम पंक्ति पर एक संदर्भ त्रुटि फेंकता है। मैं क्या गलत कर रहा हूं?

0
TheLearner 14 सितंबर 2018, 12:32

1 उत्तर

सबसे बढ़िया उत्तर

जब आप कहें

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

वह सिंटैक्स वास्तव में संकल्प फ़ंक्शन को कॉल करने और इसके वापसी मूल्य को निर्यात करने का प्रयास करता है। आप यहां ऐसा नहीं करना चाहते (और नहीं कर सकते, क्योंकि आप मूल वस्तु या प्रति-कॉल तर्क नहीं जानते हैं); आप फ़ंक्शन को वापस इस प्रकार पास कर सकते हैं

module.exports = { resolve: resolveAuthor };
1
David Maze 14 सितंबर 2018, 16:56