2015-12-16 19 views
20

Graphql ist großartig und ich benutze es in meiner App. Ich habe eine Seite, die zusammenfassende Informationen anzeigt, und ich brauche graphql, um die Gesamtzählung zurückzugeben. Kann das gemacht werden?Kann graphql Aggregate zurückzahlen?

Antwort

5

Es gibt keine automatische Aggregatfunktion in GraphQL selbst.

Sie können ein Feld namens summary hinzufügen und in der resolve Funktion die Summen berechnen.

5

... brauchen Sie graphql, um die Aggregatanzahl zurückzugeben? Kann das gemacht werden?

Ja, es kann getan werden.

Does GraphQL macht es für Sie automatisch? Nein, weil Sie nicht wissen, wo Sie Ihre Datenquelle haben.

Wie? GraphQL schreibt nicht vor, wie Sie die vom Benutzer abgefragten Daten erhalten/mutieren. Es liegt an Ihrer Implementierung, die angeforderten aggregierten Daten zu erhalten. Sie könnten aggregierte Daten direkt von Ihrer MongoDB erhalten und diese zurückgeben, oder Sie erhalten alle Daten, die Sie benötigen, aus Ihrer Datenquelle und führen die Aggregation selbst durch.

11

Sie würden einen neuen GraphQL Typen definieren, die ein Objekt, das eine Liste und eine Zahl enthält. Die Nummer wird durch eine Resolver-Funktion definiert.

Auf Ihrem GraphQL-Server können Sie die Resolver-Funktion definieren und als Teil davon müssten Sie den Code schreiben, der alle Berechnungen und Abfragen durchführt, die erforderlich sind, um die Aggregatanzahl zu erhalten.

Dies ähnelt dem Schreiben eines Objekt-Serialisierers für eine REST-API oder einen benutzerdefinierten REST-API-Endpunkt, der alle Datenbankabfragen ausführt, die zur Berechnung der Aggregatanzahl erforderlich sind.

GraphQL Stärke ist, dass es dem Frontend mehr Macht bei der Bestimmung, welche Daten gibt speziell zurückgegeben. Etwas von dem, was Sie in GraphQL schreiben, entspricht dem, was Sie für eine REST-API schreiben würden.

+3

Gute Erklärung! Ich denke, der Hauptgrund dafür ist, dass GraphQL Ihre Berechnungen und Aggregationen nicht für Sie durchführt. All dies soll in der Auflösungsfunktion des GraphQL-Abfrageobjekts geschehen, das angewiesen werden muss, die benötigten voraggregierten Daten abzurufen, arbeitet daran und gibt dann das Ergebnis zurück. – batjko