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
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 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) {