Как исправить 'UnhandledPromiseRejectionWarning' в NodeJS при попытке запустить запрос GraphQL AWS appsync - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь выполнить запрос GraphQL в AWS AppSync с помощью клиента NodeJS.Для начала я использовал руководство Amazon .

Мой код выглядит примерно так:

global.WebSocket = require('ws');
global.window = global.window || {
  setTimeout: setTimeout,
  clearTimeout: clearTimeout,
  WebSocket: global.WebSocket,
  ArrayBuffer: global.ArrayBuffer,
  addEventListener: function () { },
  navigator: { onLine: true }
};
global.localStorage = {
  store: {},
  getItem: function (key) {
    return this.store[key]
  },
  setItem: function (key, value) {
    this.store[key] = value
  },
  removeItem: function (key) {
    delete this.store[key]
  }
};
require('es6-promise').polyfill();
require('isomorphic-fetch');

const AWSAppSyncClient = require('aws-appsync').default;
const AUTH_TYPE = require('aws-appsync/lib/link/auth-link').AUTH_TYPE;
const gql = require('graphql-tag');

const handleError = (err) => {
  // console.error(err);
  throw err;
}

const myFunc = (inputValue) => {
  const query = gql(`
    // query text in here (works on the AppSync UI)
  `);
  const client = new AWSAppSyncClient({
    url: url,
    region: region,
    auth: {
      type: AUTH_TYPE.API_KEY,
      apiKey: apiKey
    },
    disableOffline: true
  });
  client.hydrated().then((client) => {
    client.query({ query: query, fetchPolicy: 'network-only' })
      .then(res => {
        console.log("res: " + res);
        // some checks on res, then return either true or false
      })
    .catch(handleError);
  });
}

async function main() {
  let res;
  try {
    res = await hasDeliveryOptions("inputValue");
  } catch (err) {
    res = false;
  } finally {
    console.log("res: " + res);
  }
}

main();

У меня проблемы с возвратом любого значения из улова.Я получаю "res: undefined".

Я относительно новичок в NodeJS, поэтому, возможно, я настроил его совершенно неправильно.Может ли кто-нибудь указать, что мне нужно сделать, чтобы иметь возможность вернуть значение из улова?

...