Ich untersuche eine Möglichkeit, GraphQL zwischen React.js Client-Anwendung und Server-Anwendung zu verwenden, die auf relationalen SQL-Datenbank aufgebaut ist. Eine Abfrage sollte auf Client-Seite einschließlich komplexer SQL-Stil Aussagen wie erstellt werden:Unterstützt GraphQL serverseitige Filterung (d. H. Erstellen von WHERE-ähnlichen Abfragen auf Clientseite)?
WHERE Customer.Age BETWEEN 22 AND 25
AND Order.Status = 'Active'
OR Product.Name LIKE '%foo%'
Es bedeutet, dass der Kunde in der Regel nur eine kleine Teilmenge von Datensätzen erhalten soll (zB 10 statt 10 Mio).
Dieses Schauen gut Phil Sturgeon article erklärt seltsame Dinge:
Ich hatte gehofft, GraphQL Kunden ihre eigenen Bereiche helfen könnte definieren, Filterung diese selbst die entsprechenden Daten sein enthält, die helfen die scoped umfasst identifizieren würde Die API sollte als Convenience-Methoden hinzufügen.
Es scheint, als würde GraphQL API-Entwicklern in diesem Fall nicht helfen, , aber es scheint zu sprechen, @filter hinzuzufügen, um dies in der Zukunft zu tun.
In der Zukunft? Keine Filterung in GraphQL? Ich fuhr fort zu erforschen und habe this SO question und dieses amazing interactive Graphcool documentation gefunden. Beide Beispiele verwenden ein Feature filter
mit einem Satz von Postfix wie _gte
genannt:
query combineMovies {
allMovies(filter: {
OR: [{
AND: [{
releaseDate_gte: "2009"
}, {
title_starts_with: "The Dark Knight"
}]
}, {
title: "Inception"
}]
}) {
title
releaseDate
}
}
Allerdings gibt es keine Vorgabe für die filter
Schlüsselwort bei http://graphql.org. Ich überprüfte sogar Relay Docs und habe keine guten Beispiele für komplizierte Filterung gefunden (vielleicht weil ich keine React-Erfahrung habe).
Bitte verdeutlichen Sie die Fähigkeiten von GraphQL, komplexe SQL WHERE-ähnliche Abfragen zu erstellen. Ist es ein Teil von Standard oder nur ein schwach unterstütztes Nebenmerkmal?