I use Express.js, and below is my code:
const SHOPIFY_SHOP = process.env.SHOPIFY_SHOP;
const ACCESS_TOKEN = process.env.SHOPIFY_ACCESS_TOKEN;
const getProductHandleBySKU = async (sku) => {
const query = `
query getProductHandleBySKU($sku: String!) {
productVariants(first: 1, query: "sku:${sku}") {
edges {
node {
product {
handle
}
}
}
}
}
`;
const variables = { sku: `${sku}` };
try {
console.log(`Sending query for SKU: ${sku}`); // Log the SKU being queried
const response = await axios({
url: `https://${SHOPIFY_SHOP}.myshopify.com/admin/api/2024-07/graphql.json`,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Shopify-Access-Token': ACCESS_TOKEN,
},
data: JSON.stringify({ query, variables }),
});
// Check if response contains product handle
const productHandle = response.data.data?.productVariants?.edges?.[0]?.node?.product?.handle;
if (productHandle) {
console.log(`Found product handle: ${productHandle} for SKU: ${sku}`);
return productHandle;
} else {
console.log(`No product found for SKU: ${sku}`);
return null;
}
} catch (error) {
if (error.response) {
console.error(`Error fetching product handle for SKU: ${sku}`);
console.error('Error Response:', error.response.data);
console.error(`Status: ${error.response.status} | StatusText: ${error.response.statusText}`);
} else {
console.error('Error Message:', error.message);
}
return null;
}
};