title: Trigger nested resolvers with GraphQL
body: <p>I think I'm missing something obvious in the way GraphQL resolvers work. This is a simplified example of my <strong>schema</strong> (a <code>Place</code> that can have <code>AdditionalInformation</code>):</p>
  
  <pre class="lang-js prettyprint-override"><code>import { ApolloServer, gql } from 'apollo-server';
  
  const typeDefs = gql`
    type Place {
      name: String!
      additionalInformation: AdditionalInformation
    }
  
    type AdditionalInformation {
      foo: String
    }
  
    type Query {
      places: [Place]
    }
  `;
  
  </code></pre>
  
  <p>And the associated <strong>resolvers</strong>:</p>
  
  <pre class="lang-js prettyprint-override"><code>const resolvers = {
    Query: {
      places: () =&gt; {
          return [{name: 'Barcelona'}];
      }
    },
    AdditionalInformation: {
      foo: () =&gt; 'bar'
    }
  };
  
  const server = new ApolloServer({typeDefs, resolvers});
  
  server.listen().then(({ url }) =&gt; {
    console.log(`API server ready at ${url}`);
  });
  
  </code></pre>
  
  <p>When I execute a basic query:</p>
  
  <pre><code>{
    places {
      name,
      additionalInformation {
        foo
      }
    }
  }
  </code></pre>
  
  <p>I always get <code>null</code> as the <code>additionalInformation</code>:</p>
  
  <pre><code>{
    "data": {
      "places": [
        {
          "name": "Barcelona",
          "additionalInformation": null
        }
      ]
    }
  }
  </code></pre>
  
  <p>It's my first GraphQL app, and I still don't get why the <code>AdditionalInformation</code> resolver is not automatically executed. Is there some way to let GraphQL know it has to fire it?</p>
  
  <p>I've found this workaround but I find it a bit tricky:</p>
  
  <pre class="lang-js prettyprint-override"><code>Place: {
    additionalInformation: () =&gt; { return {}; }
  }}
  </code></pre>