如何使用amplify-js在节点js中按用户名获取使用详细信息

时间:2019-01-12 16:38:18

标签: node.js aws-lambda amazon-cognito aws-amplify

我正在使用AWS Cognito对用户AWS Lambda获取某些数据的React应用程序进行身份验证。如何通过用户名获取特定用户的详细信息?

该应用程序类似于排行榜。用户使用cognito进行身份验证,我将其名称和图片网址存储在此处。在react客户中,我需要根据客户的某些选择来显示特定用户的图片和姓名。

我的用户名存储在数据库中。是否可以致电Cognito以获取用户详细信息?或最佳方法是什么?是否应将这些详细信息与Cognito分开存储在数据库中? (即,这似乎是重复的工作)

1 个答案:

答案 0 :(得分:0)

几个月前,我遇到了这个问题,并使用AWS-Amplify创建了此功能

import Amplify from 'aws-amplify'
var AWS = require('aws-sdk')
const CognitoExpress = require('cognito-express')

import { CognitoUserPool, CognitoUser } from 'amazon-cognito-identity-js'
exports.getUsersFromUserPool = (paramsObject, userPoolRegion) => {
    return new Promise((resolve, reject) => {
        AWS.config.update({ 'region': userPoolRegion, 'accessKeyId': process.env.AWS_ACCESS_KEY_ID, 'secretAccessKey': process.env.AWS_SECRET_KEY })
        var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider()
        cognitoidentityserviceprovider.listUsers(paramsObject, (err, data) => {
            if (err) {
                console.log(err)
                reject(err)
            }
            else {
                resolve(data)
            }
        })
    })
}

然后,只需致电

let listInstsParams = {
                        'AttributesToGet': ['email', 'name'],
                        'Filter': 'username= "' + <your_username>+ '"',
                        'UserPoolId': process.env.INSTITUTION_USER_POOL_ID
                    }
 getUsersFromUserPool(listInstsParams, process.env.INSTITUTION_REGION)
                    .then(({ Users }) => console.log(Users))