认知用户属性到普通对象
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 }), {}),
}
我正在尝试将从 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 }), {}),
}