title: Getting complete query string from inside of resolver
body: <p>I'm new to nodejs and apollo server, so don't judge me.</p>
  <p>Problem sounds exactly same as title: &quot;how to get graphql string inside resolver function?&quot;.</p>
  <p>Actually, you have four args in every resolver: parent, args, context, info.
  Some info here: <a href="https://www.apollographql.com/docs/apollo-server/essentials/data#type-signature" rel="nofollow noreferrer">https://www.apollographql.com/docs/apollo-server/essentials/data#type-signature</a></p>
  <p>I made my mind to write function, that gathers nested object inside context to regenerate query string. Why I need it? Good question. I'm writing microservice, so when i got nested query to field which is outside from current microservice I pass query by http.</p>
  <p>My resolver:</p>
  <pre><code>eventByID: async (root, args, context) =&gt; {
      const event = await EventModel.findById(root.id);
      event.creator = await nestedContextProvider(context, 'creator', event.creator);
      return eventFascade(event); //just facade for object - nothing serious
  },    
  </code></pre>
  <p>It refers to     nestedContextProvider     for solving nested context:</p>
  <pre><code>const nestedQueryTraverser = (nestedQueryArray) =&gt; {
      const nestedQueryTraversed = nestedQueryArray.selectionSet.selections.map(element =&gt; (
      element.selectionSet === undefined
        ? element.name.value
        : `${element.name.value}{${nestedQueryTraverser(element)}}`));
      return nestedQueryTraversed;
  };
  
  const nestedContextProvider = async (context, checkField, ID) =&gt; {
      if (context.operation.selectionSet.selections[0].selectionSet.selections
      .find(selector =&gt; selector.name.value === checkField)) {
      let nestedFieldsArr = context.operation.selectionSet.selections[0]
        .selectionSet.selections.find(selector =&gt; selector.name.value === checkField);
      nestedFieldsArr = nestedQueryTraverser(nestedFieldsArr);
      const a = (await users(ID, nestedFieldsArr));
      return a.data.usersByIDs[0];
      }
      return ID;
  };
  </code></pre>
  <p>So it works for me, but I know there must be better solution.</p>
  <p>Any ideas?</p>