From c572da5cbb3e22c56443cc9b4e8e9ea1d7240ab5 Mon Sep 17 00:00:00 2001 From: Divya Pahuja Date: Sun, 15 Mar 2026 15:42:41 +0530 Subject: [PATCH] fix: strictly filter reviews by product_id in storefront api to ensure only matching product reviews are shown --- app/routes/api.reviews.jsx | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/routes/api.reviews.jsx b/app/routes/api.reviews.jsx index 7f51628..758463c 100644 --- a/app/routes/api.reviews.jsx +++ b/app/routes/api.reviews.jsx @@ -53,7 +53,7 @@ export const loader = async ({ request }) => { const query = `#graphql query getReviews($query: String!) { - metaobjects(first: 50, type: "custom_product_review", query: $query) { + metaobjects(first: 250, type: "custom_product_review", query: $query) { edges { node { fields { key value } } } } } @@ -73,15 +73,18 @@ export const loader = async ({ request }) => { return jsonResponse([]); } - const reviews = (data.data?.metaobjects?.edges || []).map((edge) => { - const fields = {}; - edge.node.fields.forEach((f) => { fields[f.key] = f.value; }); - return { - name: fields.customer_name || "Anonymous", - review: fields.content || "", - rating: fields.rating || "5", - }; - }); + const reviews = (data.data?.metaobjects?.edges || []) + .map((edge) => { + const fields = {}; + edge.node.fields.forEach((f) => { fields[f.key] = f.value; }); + return { + product_id: fields.product_id, + name: fields.customer_name || "Anonymous", + review: fields.content || "", + rating: fields.rating || "5", + }; + }) + .filter((r) => String(r.product_id) === String(productId)); return jsonResponse(reviews); } catch (err) {