fix: strictly filter reviews by product_id in storefront api to ensure only matching product reviews are shown

This commit is contained in:
Divya Pahuja 2026-03-15 15:42:41 +05:30
parent 341f98b6ef
commit c572da5cbb

View File

@ -53,7 +53,7 @@ export const loader = async ({ request }) => {
const query = `#graphql const query = `#graphql
query getReviews($query: String!) { 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 } } } edges { node { fields { key value } } }
} }
} }
@ -73,15 +73,18 @@ export const loader = async ({ request }) => {
return jsonResponse([]); return jsonResponse([]);
} }
const reviews = (data.data?.metaobjects?.edges || []).map((edge) => { const reviews = (data.data?.metaobjects?.edges || [])
.map((edge) => {
const fields = {}; const fields = {};
edge.node.fields.forEach((f) => { fields[f.key] = f.value; }); edge.node.fields.forEach((f) => { fields[f.key] = f.value; });
return { return {
product_id: fields.product_id,
name: fields.customer_name || "Anonymous", name: fields.customer_name || "Anonymous",
review: fields.content || "", review: fields.content || "",
rating: fields.rating || "5", rating: fields.rating || "5",
}; };
}); })
.filter((r) => String(r.product_id) === String(productId));
return jsonResponse(reviews); return jsonResponse(reviews);
} catch (err) { } catch (err) {