首页 > 解决方案 > TypeError: cognitoidentityserviceprovider.getUser(...).promise 不是函数

问题描述

async getUserDetails(accessToken, callback) {
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();

var params = {
  AccessToken: accessToken
};

return cognitoidentityserviceprovider.getUser(params, function(err, data) {
        if (err) {
            return err;
        } else {
            //console.log(data);
            return data;
        }
}).promise();}

我正在尝试在 cognitoidentityserviceprovider.getUser 上使用 .promise() 但似乎尽管 docs.aws.amazon.com 上的文档说明了什么,但得到的是 AWS.Response 而不是 AWS.Request 并且在其上使用 promise 不起作用。

知道为什么这不起作用以及如何以异步方式获取用户属性以便以后使用信息吗?

谢谢!

标签: amazon-web-servicesasynchronouspromiseaws-lambdaamazon-cognito

解决方案


您同时使用回调和承诺,这就是为什么事情不起作用的原因。如果您想使用.promise(),则不能将回调传递给任何 AWS 开发工具包方法。

尝试这个:

const getUserDetails = async(accessToken) => {
    const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();

    const params = {
      AccessToken: accessToken
    };

    return await cognitoidentityserviceprovider.getUser(params).promise();
}

推荐阅读