认知用户属性到普通对象

cognito user attributes to plain object

我正在尝试将从 CognitoIdentityServiceProvider listUsersInGroup 获取的 Cognito 用户属性转换为普通对象,但我没有找到执行此操作的任何库或 AWS 函数...然后我尝试自己实现它

这就是我想出的:

{
    ...user,
    Attributes: user.Attributes.map((x) => ({ [x.Name]: x.Value })),
}

但这会生成一个包含对象的数组,而我正在尝试创建一个包含所有属性的对象...

[
    {
        "sub": "dasfdasfd-vcfdgfd",
    },
    {
        "website": "aba",
    },
    {
        "address": "new",
    },
]

这是用户数据的示例(属性可能因用户而异):

用户a:

[
    {
        "Name": "sub",
        "Value": "dasfdasfd-vcfdgfd",
    },
    {
        "Name": "website",
        "Value": "aba",
    },
    {
        "Name": "address",
        "Value": "new",
    },
    {
        "Name": "email_verified",
        "Value": "false",
    },
    {
        "Name": "phone_number_verified",
        "Value": "false",
    }
]

用户 b:

[
    {
        "Name": "custom:age",
        "Value": "0",
    },
    {
        "Name": "custom:height",
        "Value": "0",
    },
    {
        "Name": "email",
        "Value": "dsafdsa@gmail.com",
    }
]

看起来很简单,只需要使用循环。仅供参考:数组的映射函数总是returns数组

function getAttributes(data){
 let attributes = {};
 for(let x of data){
    attributes[x["name"]] = x["value"];
 }
 return attributes;
}

{
    ...user,
    Attributes: getAttributes(user.Attributes)
}

你可以使用reduce

{
    ...user,
    Attributes: user.Attributes.reduce((acc, { Name, Value }) => ({...acc, [Name]: Value }), {}),
}