Reverse product pagination not working with price filter applied

Mud_dev
Shopify Partner
1 0 0

I have implemented pagination as per https://shopify.dev/docs/api/usage/pagination-graphql but am finding an odd situation with backward pagination.

 

For testing, we're just displaying one product at a time from demo data on a development store. This backward pagination query (with no price filter) returns a product as expected:

 

query getCollectionById($id: ID!) {
  collection(id: $id) {
    products(
        last: 1, 
        before: "eyJsYXN0X2lkIjo4NTQxNjYzMTMzOTc0LCJsYXN0X3ZhbHVlIjowfQ==", 
        filters: { 

        }) {
        edges {
            node {
                id
                title
                priceRange {
                    minVariantPrice {
                        amount
                    }
                    maxVariantPrice {
                        amount
                    }
                }
                compareAtPriceRange {
                    minVariantPrice {
                        amount
                    }
                    maxVariantPrice {
                        amount
                    }
                }
            }
        },
        pageInfo {
            hasPreviousPage
            hasNextPage
            startCursor
            endCursor
        }
    },
  }
}

Result:

{
    "data": {
        "collection": {
            "products": {
                "edges": [
                    {
                        "node": {
                            "id": "gid://shopify/Product/8541663166742",
                            "title": "The Multi-managed Snowboard",
                            "priceRange": {
                                "minVariantPrice": {
                                    "amount": "629.95"
                                },
                                "maxVariantPrice": {
                                    "amount": "629.95"
                                }
                            },
                            "compareAtPriceRange": {
                                "minVariantPrice": {
                                    "amount": "0.0"
                                },
                                "maxVariantPrice": {
                                    "amount": "0.0"
                                }
                            }
                        }
                    }
                ],
                "pageInfo": {
                    "hasPreviousPage": true,
                    "hasNextPage": true,
                    "startCursor": "eyJsYXN0X2lkIjo4NTQxNjYzMTY2NzQyLCJsYXN0X3ZhbHVlIjowfQ==",
                    "endCursor": "eyJsYXN0X2lkIjo4NTQxNjYzMTY2NzQyLCJsYXN0X3ZhbHVlIjowfQ=="
                }
            }
        }
    }
}

The same query with a price filter applied returns no results, even though the price of the product shown above is within bounds of that price filter:

 

query getCollectionById($id: ID!) {
  collection(id: $id) {
    products(
        last: 1, 
        before: "eyJsYXN0X2lkIjo4NTQxNjYzMTMzOTc0LCJsYXN0X3ZhbHVlIjowfQ==", 
        filters: { 
            price: { 
                min: 0, 
                max: 2000 
            } 
        }) {
        edges {
            node {
                id
                title
                priceRange {
                    minVariantPrice {
                        amount
                    }
                    maxVariantPrice {
                        amount
                    }
                }
                compareAtPriceRange {
                    minVariantPrice {
                        amount
                    }
                    maxVariantPrice {
                        amount
                    }
                }
            }
        },
        pageInfo {
            hasPreviousPage
            hasNextPage
            startCursor
            endCursor
        }
    },
  }
}

Returns:

{
    "data": {
        "collection": {
            "products": {
                "edges": [],
                "pageInfo": {
                    "hasPreviousPage": false,
                    "hasNextPage": false,
                    "startCursor": null,
                    "endCursor": null
                }
            }
        }
    }
}

Is this a bug, particularly given that the same does not happen for forward pagination?

Replies 0 (0)