Ad

Shopify-api-node: Promise Not Returning Value

Setting up a node.js app to retrieve order(s) information from shopify. I'm trying to store that data and run some logic, but I can't seem to get a hold of it.


THIS WORKS:

shopify.order.list()
.then(function(orders){
    console.log(orders);
  });

THIS DOES NOT WORK:

var orders_json;
shopify.order.list()
    .then(function(orders){
        orders_json=orders;
          //console.log(orders);
      });

console.log(orders_json); //returns undefined

Ad

Answer

Let me introduce you to the world of async/await. As long as you declare your function as async and the function you are "awaiting" returns a promise, you can handle this in a more synchronous way. Have a look at the docs linked above. Notice how I called the async function after it was declared. You can't call await outside the scope of an async function.

async function fetchOrders() {
  try {
    const orders_json = await shopify.order.list();
    // do stuff with orders_json

    return orders_json;
  } catch(err) {
    // handle err
  }
}

const orders = fetchOrders();
Ad
source: stackoverflow.com
Ad