Skip to content

Latest commit

 

History

History
41 lines (33 loc) · 1.49 KB

conversion-metafield-lookups-from-a-resource.md

File metadata and controls

41 lines (33 loc) · 1.49 KB

Conversion: Metafield lookups from a resource

For every Shopify resource object that supports metafields, Mechanic has traditionally provided a way to directly access those metafields from the resource using dot notation. This shortcut will no longer be accessible for product and variant REST resources once they are fully deprecated.

{% code title="REST - product metafield value check" lineNumbers="true" %}

{% raw %}
{% assign metafield = product.metafields.custom.my_field %}

{% if metafield.value == "Alpha" %}
  {% log "metafield value matched" %}
{% endif %}
{% endraw %}

{% endcode %}

While metafields can be queried directly using their ID, this attribute is not present in the product webhook data. The standard approach in GraphQL is to query the product resource for the metafield(s) and value(s), passing the namespace and key as the "key" value, in the same manner as the REST dot notation lookup.

{% code title="GraphQL - product query with metafield and value check" lineNumbers="true" %}

{% raw %}
{% capture query %}
  query {
    product(id: {{ product.admin_graphql_api_id | json }}) {
      metafield(key: "custom.my_field") {
        value
      }
    }
  }  
{% endcapture %}

{% assign result = query | shopify %}

{% assign metafield = result.data.product.metafield %}

{% if metafield.value == "Alpha" %}
  {% log "metafield value matched" %}
{% endif %}
{% endraw %}

{% endcode %}