GraphQL requêtes avec des tables de jointure

Je suis en train d'apprendre GraphQL j'ai donc construit un petit projet. Disons que j'ai 2 modèles, User et Comment.

const Comment = Model.define('Comment', {

  content: {
    type: DataType.TEXT,
    allowNull: false,
    validate: {
      notEmpty: true,
    },
  },

});

const User = Model.define('User', {

  name: {
    type: DataType.STRING,
    allowNull: false,
    validate: {
      notEmpty: true,
    },
  },

  phone: DataType.STRING,

  picture: DataType.STRING,

});

Les relations sont 1:de nombreux, où un utilisateur peut avoir plusieurs commentaires.

J'ai construit le schéma comme ceci:

const UserType = new GraphQLObjectType({
  name: 'User',
  fields: () => ({
    id: {
      type: GraphQLString
    },
    name: {
      type: GraphQLString
    },
    phone: {
      type: GraphQLString
    },
    comments: {
      type: new GraphQLList(CommentType),
      resolve: user => user.getComments()
    }
  })
});

Et la requête:

const user = {
  type: UserType,
  args: {
    id: {
      type: new GraphQLNonNull(GraphQLString)
    }
  },
  resolve(_, {id}) => User.findById(id)
};

L'exécution de la requête d'un utilisateur et de ses commentaires est fait avec 1 demande, comme suit:

{
  User(id:"1"){
    Comments{
      content
    }
  }
}

Que je comprends, le client devra obtenir les résultats à l'aide de 1 de la requête, c'est l'avantage à l'aide de GraphQL. Mais le serveur va exécuter 2 requêtes, l'une pour l'utilisateur et un autre pour ses commentaires.

Ma question est, quelles sont les meilleures pratiques pour la construction de la GraphQL schéma et les types et la combinaison de jointure entre les tables, de sorte que le serveur peut également exécuter la requête avec 1 demande?

InformationsquelleAutor itaied | 2016-12-03