fix: strictly filter reviews by product_id in storefront api to ensure only matching product reviews are shown
This commit is contained in:
parent
341f98b6ef
commit
c572da5cbb
@ -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 || [])
|
||||||
const fields = {};
|
.map((edge) => {
|
||||||
edge.node.fields.forEach((f) => { fields[f.key] = f.value; });
|
const fields = {};
|
||||||
return {
|
edge.node.fields.forEach((f) => { fields[f.key] = f.value; });
|
||||||
name: fields.customer_name || "Anonymous",
|
return {
|
||||||
review: fields.content || "",
|
product_id: fields.product_id,
|
||||||
rating: fields.rating || "5",
|
name: fields.customer_name || "Anonymous",
|
||||||
};
|
review: fields.content || "",
|
||||||
});
|
rating: fields.rating || "5",
|
||||||
|
};
|
||||||
|
})
|
||||||
|
.filter((r) => String(r.product_id) === String(productId));
|
||||||
|
|
||||||
return jsonResponse(reviews);
|
return jsonResponse(reviews);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user