Node.js Проблема обратного вызова Cognito - PullRequest
0 голосов
/ 04 апреля 2020

Я работаю с кодом node.js для интеграции с Cognito JS SDK. У меня есть проблема, связанная с асинхронными функциями, однако я не могу найти способ ее решить. Соответствующий код следующий.

cognitoUser.confirmRegistration(body.confirmation_code, true, function (err, result) {
    if (err) {
        // There is an error
        console.log('User not confirmed: ')
        console.log(err)
        const response = {
            statusCode: 422,
            body: JSON.stringify(err)
        };
        return callback(null, response);
    }
    // All good
    console.log('User confirmed: ')
    console.log(result)
});

// if the user is not confirmed it should not get here

console.log('this is not working ==========');

verifyRegistration может иметь два результата. Если есть ошибка, должен быть вызван обратный вызов, и я ожидаю, что код завершится, а console.log внизу не будет выполнен. Однако этого не происходит. То, что происходит, - то, что verifyRegistration выполняется асинхронно (я полагаю), и, с тех пор код продолжает работать, внизу будет выполнен console.log и, в какой-то момент, verifyRegistration возвращает и ответит, и if (err) будет выполнен.

Однако это не то, что я хочу. Я ожидаю, что в случае ошибки console.log внизу никогда не будет выполнен.

Это выходные данные console.logs. Я выдвигаю ошибку, чтобы показать свое поведение.

this is not working ==========
User not confirmed: 
{
  code: 'CodeMismatchException',
  name: 'CodeMismatchException',
  message: 'Invalid verification code provided, please try again.'
}

Этот код выполняется на моем компьютере локально, однако он будет развернут в функции Lambda до AWS с использованием Serverless.

...