async / await для функции aws sdk - PullRequest
0 голосов
/ 18 июня 2020

Я использую пользовательский запрос аутентификации, чтобы получить OTP в качестве ответа, с приведенным ниже кодом я могу получить OTP. Но вместо обещания, как я могу использовать async / await для получения ответа от intiateAuth.

        const params = {
            AuthFlow: ".......",
            ClientId: "*********",
            AuthParameters: {
                "USERNAME": req.userName,
            }
        };
        return new Promise((resolve, reject) => {
            new AWS.CognitoIdentityServiceProvider().initiateAuth(params, (err, data) => {
                if (err) {
                    console.log("Error in adminInitiateAuth: %s", err.message);
                    reject(false);
                } else {
                    const otpResponse: IOTPResponseDetails = {
                        session: data.Session,
                        userName: data.ChallengeParameters.USERNAME,
                    }
                    resolve(otpResponse);
                }
            });
        });
    }```

1 Ответ

0 голосов
/ 18 июня 2020

Создайте асинхронную c функцию. Используйте " await " внутри блока try / catch, чтобы зафиксировать любые ошибки.

const params = {
  AuthFlow: ".......",
  ClientId: "*********",
  AuthParameters: {
    "USERNAME": req.userName,
  }
};

// Async function using await        
const execute = async(parameters) => {
  try {
    const data = await new AWS.CognitoIdentityServiceProvider().initiateAuth(parameters);

    const otpResponse: IOTPResponseDetails = {
      session: data.Session,
      userName: data.ChallengeParameters.USERNAME,
    };

    return otpResponse;
  } catch (err) {
    console.log("Error in adminInitiateAuth: %s", err.message);
    throw new Error(err.message);
  }
}

// Call async function with params as argument
await execute(params);
...