Я столкнулся с проблемой в моем приложении js для узла при выводе списка пользователей aws cognito.
Эта проблема возникает только тогда, когда у меня более 60 пользователей Cognito.
Справочник по API
Ниже приведен мой фрагмент кода.
function isAllowedToDeleteOrRevokeUsers(cognitoidentityserviceprovider, params, listUsers, adminUserList) {
return new Promise(function(resolve, reject) {
cognitoidentityserviceprovider.listUsers(params, function(err, data) {
if (err) {
logger.log("ERROR", "Error while calling listUsers API : " + err);
reject({ code: 404, msg : err.message});
} else {
data.Users.forEach(function(user) {
if (isUserASystemAdmin(user)) {
adminUserList.users.push(user);
}
});
if (data.PaginationToken != undefined) {
params.PaginationToken = data.PaginationToken;
isAllowedToDeleteOrRevokeUsers(cognitoidentityserviceprovider, params, listUsers, adminUserList);
} else {
// We've reached the end
let totalCognitoAdminUsers = 0;
let totalCognitoAdminUsersToDelete = 0;
adminUserList.users.forEach(function(adminUser) {
if (isCognitoUser(adminUser)) {
totalCognitoAdminUsers++;
if (listUsers.indexOf(adminUser.Username) > -1) {
totalCognitoAdminUsersToDelete++;
}
}
});
if(totalCognitoAdminUsers != 0 && (totalCognitoAdminUsers == totalCognitoAdminUsersToDelete)) {
reject({ code: 404, msg : "Cannot alter last Admin User controlled by standard authentication"});
} else {
console.log("Return Success");
resolve();
}
}
}
});
});
};
Эта функция работает нормально, когда у меня менее 60 пользователей, но согласно Документам AWS мы можем читать только 60 пользователей одновременно, в этом случае я отправляю paginationtoken в парам.
Мой код застревает на линии resolve()
.
Если я уберу фрагмент кода ниже, он будет работать.
if (data.PaginationToken != undefined) {
params.PaginationToken = data.PaginationToken;
isAllowedToDeleteOrRevokeUsers(cognitoidentityserviceprovider, params, listUsers, adminUserList);
}
Любая помощь?
Пожалуйста, дайте мне знать, если что-нибудь понадобится.