我正在使用AppSync
withIAM auth
和。我正在尝试执行以下操作。DynamoDB resolver
Cognito
{
"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
包含的内容吗?