处理多个异步调用的结果并在收集结果后调用数据库

Handling result of Multiple async call and call the database after collecting result

伙计们,我是 node js 的新手,我正在尝试执行以下步骤

1) 调用 AWS API 通过传递数据创建 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) 我想知道如何等待完成所有请求然后插入数据库。

请帮忙。

使用下面编写的代码片段:

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);
    });