2017-09-27 2 views
0
Graf

Ich habe diese Graphql AbfrageReturn Graphql

"{TABLE_NAME{ 
    id 
    severity 
    des 
    ip 
    hostname 
    description 

    } 
}"; 

, dass die Rückkehr von mehr als 1000 Datensätze .. Meine Fragen ist:, wie ich tun

SELECT COUNT(*) FROM TABLE_NAME 

in Graphql?

Antwort

0

Die kurze Antwort ist Sie nicht. Ein GraphQL-Objekttyp wird nicht notwendigerweise 1: 1 einer Datenbanktabelle zugeordnet, sodass Sie ihn nicht so betrachten können. Wenn Sie eine Zählung aus einer Tabelle erhalten möchten, müssen Sie diese entweder als Feld zu Ihrem Ausgabetyp oder als eigenes Feld hinzufügen. Ich gehe davon aus, da Sie wollen herausfinden, wie groß ein Tisch ist, bevor Sie es abfragen möchten Sie einen ‚tableInfo‘ Typ Abfrage, die mit wie

const TableInfo = new GraphQLObjectType({ 
    name: 'TableInfo', 
    fields: { 
    count: GraphQLInt 
    } 
}) 
const Query = new GraphQLObjectType({ 
    name: 'Query', 
    fields: { 
    tableInfo: { 
     type: TableInfo, 
     args: { 
     name: new GraphQLNonNull(GraphQLString) 
     }, 
     resolve (source, args) { 
     return new Promise((resolve, reject) => { 
      connection.query(
      'SELECT COUNT(*) from ' + args.name, 
      (error, results) => { 
       return error ? reject(error) : resolve(results) 
      } 
     ) 
     }) 
     } 
    } 
    } 
}) 
const schema = new GraphQLSchema({ 
    query: Query 
}) 

dann anfordern

query Info { 
    tableInfo(name: "my_table") { 
    count 
    } 
} 

, was gesagt, diese aussehen würde ist kein gutes Muster, und wenn Sie erwarten, dass eine Abfrage eine große Menge an Ergebnissen zurückgibt, sollten Sie stattdessen Paginierung verwenden. Best Practices sind hier http://graphql.org/learn/pagination/