我正在使用AppSyncwithIAM auth和。我正在尝试执行以下操作。DynamoDB resolverCognito
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"userId": $util.dynamodb.toDynamoDBJson($ctx.identity.username)
}
}
$ctx.identity.username应该包含userId生成的Cognito,我正在尝试使用它来获取当前用户数据。
客户端,我正在使用AWS Amplify它告诉我我当前已登录:
this.amplifyService.authStateChange$.subscribe(authState => {
if (authState.state === 'signedIn') {
this.getUserLogged().toPromise();
this._isAuthenticated.next(true);
}
});
getUserLogged是Apollo query应该返回用户数据的那个。
我试过的:
- 如果我这样离开它,则
getUserLogged返回 null。 - 如果我用这样
$util.dynamodb.toDynamoDBJson($ctx.identity.username)的已知名称替换解析器:它可以工作!我得到了这个用户数据。userId$util.dynamodb.toDynamoDBJson("b1ad0902-2b70-4abd-9acf-e85b62d06fa8") - 我尝试在解析器页面中使用测试工具,但它只提供假数据,所以我不能依赖它。
我犯错了吗?对我来说,一切看起来都不错,但我想我错过了什么?
我可以清楚地看到$ctx.identity包含的内容吗?