2016-04-08 15 views
1

Ich habe eine GraphQl API für eine Reihe von Elementen Auflistung, und ich kann es perfekt usw. abfragen Aber jetzt würde ich für eine Teilmenge dieser Liste abfragen mag, wo eine Eigenschaft ‚alle möglichen Werte mit Ausnahme eines bestimmt man haben kann ".GraphQL "ungleich" Operator?

Zum Beispiel möchte ich so etwas fragen:

{ 
    items(status: !"Unwanted"){ 
    id 
    } 
} 

Das Ausrufezeichen offensichtlich nicht funktioniert, aber es zeigt, was ich bin nach. Kann online keine Informationen dazu finden.

Kennt jemand eine Möglichkeit, dies zu tun? Ich würde wirklich hassen, alle möglichen gesuchten Werte aufzählen zu müssen, anstatt nur den einen unerwünschten Wert auszuschließen. Dies wäre ein wirklich schlechtes Design und nicht skalierbar.

Danke.

Antwort

6

Wenn Sie das Schema definieren können (implementieren Sie den Server), können Sie ein zweites Argument wie statusExcept zum Feld items hinzufügen. Dann überprüfe in der resolve-Methode, ob status oder statusExcept gesetzt wurde und lege die Items entsprechend an.

Es ist der Server-API festgelegt ist es afaik nichts gibt, was man alles und Filter außer immer auf dem Client tun kann.

+1

Danke für den Tipp. Ich kann sehen, wie das leicht funktionieren würde. Hat GraphQL wirklich kein Konzept von "nicht"? Scheint so eine eklatante Unterlassung. – batjko

+1

@batijo GraphQL hat kein Suchkonzept, sondern Sie müssen die Suche mit Werkzeugen implementieren, die Ihnen von GraphQL zur Verfügung gestellt werden, zum Beispiel Argumente. GraphQL ist nur eine Sprachspezifikation, es bleibt neutral darüber, wie die Suche in Ihrer bestimmten API oder Anwendung funktionieren soll. – freiksenet

+1

Aber es tut! Es ist eine Abfragesprache. Es verfügt über Abfrageparameter, mit denen Sie nach bestimmten Werten suchen können (sie können jedoch auch vom Schema im Hintergrund implementiert werden). Wenn ich beispielsweise nach z.B. {status: "New"}, das ist status = "New", warum hat es kein Konzept von status! = "New", zum Beispiel: {$ not: {status: "New"}}? Scheint wie eine offensichtliche Sache hinzuzufügen. – batjko

1

Verwendung ne:

{ 
    items(status: {ne: "Unwanted"}){ 
    id 
    } 
}