2017-02-12 3 views
0

unterhalb der GraphQLObject FelderJeder Knoten von Daten führen separate Datenbankanfrage

userId: { 
     type: GraphQLID, 
     resolve: obj => { 
      console.log(obj._id); 
      return obj._id; 
     } 
    }, 
    email: { type: GraphQLString }, 
    password: { type: GraphQLString }, 
    firstName: { type: GraphQLString }, 
    lastName: { type: GraphQLString }, 

Mine Server sents mehrere Anforderung ebenso wie von mir Dokumente, hier wird es 5 verschiedene Anfrage senden.

, wie ich diese Anfrage man alle Daten in Anfrage bekommen optimieren können

589800cf39b58b29c4de90dd 
-------------------------------- 
    58980673e7c9a733009091d1 
-------------------------------- 
    58985339651c4a266848be42 
-------------------------------- 
    589aac5f884b062b979389bc 
-------------------------------- 
    589aad9d24989c2d50f2a25a 
+0

Meinen Sie, dass Sie wollen viele Objekte wie 'user' mit einer Anfrage zurückgeben? Und jeder "Benutzer" hätte einen der oben angegebenen "id"? – piotrbienias

+0

Ja, ich möchte alle Benutzer in '[]' und führen Sie eine Anfrage und so viel wie weniger db Anfrage –

Antwort

0

In einem solchen Fall könnten Sie eine query Methode erstellen, die eine array als Parameter akzeptieren würde, die ein Array von IDs wäre in dieser Fall.

getUsers: { 
    type: new GraphQLList(User), 
    args: { 
     ids: { 
      type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(GraphQLID))) 
     } 
    }, 
    resolve: (root, args, context) => { 
     let query = 'SELECT * FROM users WHERE id = ANY($1)'; 

     return pgClient.query(query, [args.ids], (err, result) => { 
      // here you would access all returned rows in the result object 
      console.log(result); 
     }); 
    } 
} 

Die query Variable würde sich je nach verwendeter Datenbank unterscheiden. In diesem Beispiel habe ich das Modul node-postgres für PostgreSQL verwendet. Das Konzept ist jedoch das gleiche: Verwenden Sie ein Array von IDs, um einzelne Abfragen auszuführen, die alle Benutzer zurückgeben.

Und dann könnten Sie diese Abfrage nennen:

query getUsers($ids: [ID!]!) { 
    getUsers(ids: $ids){ 
     id 
     email 
     ... 
    } 
} 

// and the variables below 
{ 
    ids: ['id#1', 'id#2', 'id#3'] 
} 
Verwandte Themen