Extensie

Query Functions

Manipuleer de waarden van velden binnen de GraphQL-query, via een verzameling hulpmiddelen en speciale directives die meta-programmeermogelijkheden bieden.

Logo
Target Image

Click to watch tutorial video - 12:09

Manipuleer de waarden van velden binnen de GraphQL-query, via een verzameling hulpmiddelen en speciale directives die meta-programmeermogelijkheden bieden.

Field to Input

Haal de waarde van een veld op, manipuleer die en geef hem door als invoer aan een ander veld — allemaal binnen dezelfde query.

query {
  posts {
    excerpt
 
    # Referencing previous field with name "excerpt"
    isEmptyExcerpt: _isEmpty(value: $__excerpt)
 
    # Referencing previous field with alias "isEmptyExcerpt"
    isNotEmptyExcerpt: _not(value: $__isEmptyExcerpt)
  }
}

Iteratie en Manipulatie van Veldwaarden

Toevoeging van meta-directives aan het GraphQL-schema, voor het itereren en manipuleren van de waarde-elementen van array- en objectvelden:

  1. @underArrayItem
  2. @underJSONObjectProperty
  3. @underEachArrayItem
  4. @underEachJSONObjectProperty
  5. @objectClone

@underArrayItem zorgt ervoor dat de geneste directive wordt toegepast op een specifiek item uit de array.

In de onderstaande query wordt alleen het eerste item in de array met categorienamen omgezet naar hoofdletters:

query {
  posts {
    categoryNames
      @underArrayItem(index: 0)
        @strUpperCase
  }
}

...wat het volgende oplevert:

{
  "data": {
    "posts": {
      "categoryNames": [
        "NEWS",
        "sports"
      ]
    }
  }
}

Field on Field

Toevoeging van de @applyField-directive, om een bepaald veld uit te voeren op de waarde van het opgeloste veld.

Toegepast op een veld stelt de @applyField-directive je in staat om een ander veld uit te voeren (dat beschikbaar is op hetzelfde type en wordt toegepast op hetzelfde object), en de resulterende waarde door te geven aan een andere directive of de waarde van het veld te overschrijven.

In de onderstaande query heeft het veld Post.title voor het object de waarde "Hello world!". Door @applyField toe te voegen om het veld _strUpperCase uit te voeren:

{
  post(by: { id: 1 }) {
    title
      @passOnwards(as: "input")
      @applyField(
        name: "_strUpperCase"
        arguments: {
          text: $input
        },
        setResultInResponse: true
      )
  }
}

...wordt de veldwaarde omgezet naar hoofdletters, wat het volgende oplevert:

{
  "data": {
    "post": {
      "title": "HELLO WORLD!"
    }
  }
}

Voorwaardelijke Veldmanipulatie

Toevoeging van meta-directives @if en @unless aan het GraphQL-schema, om een geneste directive voorwaardelijk uit te voeren op het veld.

@if voert zijn geneste directives alleen uit als een voorwaarde de waarde true heeft.

In deze query worden de namen van gebruikers "Leo" en "Peter" omgezet naar hoofdletters, omdat ze in de array met "speciale gebruikers" staan, terwijl "Martin" dat niet doet:

query {
  users {
    name
      @passOnwards(as: "userName")
      @applyField(
        name: "_inArray"
        arguments: {
          value: $userName
          array: ["Leo", "John", "Peter"]
        }
        passOnwardsAs: "isSpecialUser"
      )
      @if(
        condition: $isSpecialUser
      )
        @strUpperCase
  }
}

...wat het volgende oplevert:

{
  "data": {
    "users": [
      {
        "name": "LEO"
      },
      {
        "name": "Martin"
      },
      {
        "name": "PETER"
      }
    ]
  }
}

Standaardwaarde van een Veld

Toevoeging van de @default-directive, om een waarde in te stellen voor null- of lege velden.

In het onderstaande voorbeeld geeft het veld featuredImage null terug wanneer een bericht geen uitgelichte afbeelding heeft:

{
  post(by: { id: 1 }) {
    featuredImage {
      id
      src
    }
  }
}
{
  "data": {
    "post": {
      "featuredImage": null
    }
  }
}

Met @default kunnen we een standaardafbeelding ophalen:

{
  post(by: { id: 1 }) {
    featuredImage @default(value: 55) {
      id
      src
    }
  }
}
{
  "data": {
    "post": {
      "featuredImage": {
        "id": 55,
        "src": "http://mysite.com/wp-content/uploads/my-default-image.webp"
      }
    }
  }
}

Veld Verwijderen uit Respons

Toevoeging van de @remove-directive aan het GraphQL-schema, die de uitvoer van een veld uit de respons verwijdert.

In de onderstaande query genereren we de URL om een HTTP-verzoek naar te sturen, door het sitedomein en het REST API-eindpunt samen te voegen. Omdat de waarden van deze componenten ons niet interesseren, hoeven we ze niet in de respons weer te geven en kunnen we ze verwijderen met @remove:

query {
  siteURL: optionValue(name: "siteurl")
    @remove
 
  requestURL: _sprintf(
    string: "%s/wp-json/wp/v2/comments/11/?_fields=id,content,date",
    values: [$__siteURL]
  )
    @remove
 
  _sendJSONObjectItemHTTPRequest(
    input: {
      url: $__requestURL
    }
  )
}

...wat de volgende respons oplevert (let op dat de velden siteURL en requestURL zijn verwijderd):

{
  "data": {
    "_sendJSONObjectItemHTTPRequest": {
      "id": 11,
      "date": "2020-12-12T04:07:36",
      "content": {
        "rendered": "<p>Btw, I really like this stuff<\/p>\n"
      }
    }
  }
}

Foutmelding in Respons Activeren

Toevoeging van het globale veld _fail en de directive @fail aan het GraphQL-schema, om expliciet een vermelding toe te voegen aan de eigenschap errors in de respons, en het globale veld _warn en de directive @warn, om een vermelding toe te voegen aan de eigenschap warnings in de respons.

Het veld _fail voegt de fout altijd toe, en de directive @fail wanneer aan de voorwaarde in het argument condition is voldaan:

query {
  _fail(message: "Some error")
  
  posts {
    featuredImage @fail(
      condition: IS_NULL,
      message: "The post does not have a featured image"
    ) {
      id
      src
    }
  }
  
  users {
    name @fail(
      condition: IS_EMPTY,
      message: "The retrieved user does not have a name"
    )
  }
}

All-Inclusive-pakket kopen

Persoonlijk
$79
/jaar
“All-Inclusive” pakket
Licentie voor 1 domein
Kopen ->
  • 1 domein
  • Ondersteuning
  • Productupdates
Organisatie
$99
/jaar
“All-Inclusive” pakket
Licentie voor 3 domeinen
Kopen ->
  • 3 domeinen
  • Ondersteuning
  • Productupdates
Professioneel
$199
/jaar
“All-Inclusive” pakket
Licentie voor 10 domeinen
Kopen ->
  • 10 domeinen
  • Ondersteuning
  • Productupdates

De licentie geldt voor 1 jaar (jaarlijks vernieuwbaar). Prijzen zijn in USD.

Meer domeinen nodig? Neem contact met ons op

30 dagen niet-goed-geld-teruggarantie

Koop elke extensie met de zekerheid dat je om terugbetaling kunt vragen

Testimonial image

“Deze plugin tilt je site naar een heel ander niveau en maakt er een krachtpatser van. Hoe meer je ontdekt wat hij kan, hoe indrukwekkender het wordt. Als je twijfelt — pak hem gewoon, je zult jezelf later nog vervloeken als je dat niet doet! De documentatie spreekt voor zich en is zo solide als het maar kan. Leo (de developer) is een van de scherpste en meest betrokken developers die ik ooit ben tegengekomen. Hij reageert supersnel en weet duidelijk waar hij het over heeft. Ik ben eerlijk gezegd helemaal blij met wat deze plugin allemaal kan. De mogelijkheden zijn vrijwel eindeloos, en als SEO voor jou telt, helpt dit ding je site flink omhoog in de zoekresultaten.”

olmate - Webdeveloper

Abonneer je op onze nieuwsbrief

Blijf op de hoogte van alle updates over Gato GraphQL.