Обработка результата множественного асинхронного вызова и вызова базы данных после сбора результата - PullRequest
0 голосов
/ 11 декабря 2018

Ребята, я новичок в узле js и пытаюсь выполнить следующие шаги:

1) Вызов API AWS для создания пользователя Cognito путем передачи данных.2) когда все запросы будут выполнены, я вставлю все записи в базу данных.

3) user - это массив всех пользователей.

Вот что у меня естьсделано

const obj = new ReadCsvFile();
obj.readCSVFromAWS()
    .then(result => {
        const user = obj.getMigratedList();
        for (const i in user) {
            if (user[i] !== null && user[i] !== undefined) {
                const uuid = obj.createUserInCognito(user[i]);
                uuid.then(userAttribute => {
                    user[i].uuid = String(userAttribute.User.Attributes.values); //should complete all the request 
                });
            }
        }
    })
    .catch(err => {
        console.log(err);
    });


public async createUserInCognito(data: User) {
        const CognitoIdentityServiceProvider = AWS.CognitoIdentityServiceProvider;
        const client = new CognitoIdentityServiceProvider({ apiVersion: "2016-04-19" });
        const params = {
            UserPoolId: "us-east-2_lleSjp1bN" /* required */,
            Username: data.email /* required */,
            DesiredDeliveryMediums: ["EMAIL"],
            ForceAliasCreation: false,
            // email_verified: true,
            // MessageAction: "SUPPRESS",
            TemporaryPassword: data.password,
            UserAttributes: [
                {
                    Name: "email" /* required */,
                    Value: data.email
                }
            ]
        };
        return await client.adminCreateUser(params).promise();
    }

Задача

1) Я хочу, чтобы весь запрос был выполнен пользователем Cognito.

2) Затем мне нужно пройтисписок пользователей в базе данных.

3) Я хочу знать, как мне дождаться завершения всего запроса и затем вставить в базу данных.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 11 декабря 2018

Используйте фрагмент кода, написанный ниже:

const obj = new ReadCsvFile();
obj.readCSVFromAWS()
    .then(result => {
        const user = obj.getMigratedList();
        for (const i in user) {
            if (user[i] !== null && user[i] !== undefined) {
                obj.createUserInCognito(user[i]).then(uuid=>{
                    uuid.then(userAttribute => {
                        user[i].uuid = String(userAttribute.User.Attributes.values); //should complete all the request 
                    });
                });

            }
        }
    })
    .catch(err => {
        console.log(err);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...