![](/img/trans.png)
[英]AWS AppSync GraphQL API only return 20 items from DynamoDB
[英]AWS Appsync Graphql query to get list of items returns empty array even though the dynamodb table has items in it
我正在運行一個 Angular 11 應用程序,該應用程序使用 GraphQL 和 dynamoDB 作為后端與 AWS Amplify 和 Appsync 集成。
這是我的 Graphql 架構:-
type School
@model
@auth(
rules: [{ allow: owner, ownerField: "admins", operations: [update, read] }]
) {
id: ID!
name: String!
admins: [Member]
classes: [Class] @connection(name: "SchoolClasses")
members: [Member] @connection(name: "SchoolMembers")
}
type Class
@model
@auth(
rules: [{ allow: owner, ownerField: "admins", operations: [update, read] }]
) {
id: ID!
name: String!
school: School @connection(name: "SchoolClasses")
admins: [Member]
members: [Member] @connection(name: "ClassMembers")
}
type Member @model @auth(rules: [{ allow: owner }]) {
id: ID!
name: String!
school: School @connection(name: "SchoolMembers")
class: Class @connection(name: "ClassMembers")
}
這是我的客戶定義:-
const client = new AWSAppSyncClient({
url: awsconfig.aws_appsync_graphqlEndpoint,
region: awsconfig.aws_appsync_region,
auth: {
type: awsconfig.aws_appsync_authenticationType,
jwtToken: async () =>
(await Auth.currentSession()).getAccessToken().getJwtToken(),
},
complexObjectsCredentials: () => Auth.currentCredentials(),
cacheOptions: {
dataIdFromObject: (obj: any) => `${obj.__typename}:${obj.myKey}`,
},
});
這是我的查詢方法:-
client
.query({
query: ListSchools,
})
.then((data: any) => {
console.log('data from listSchools ', data);
console.log(data.data.listSchools.items);
});
};
這是我的查詢定義:-
import gql from 'graphql-tag';
export default gql`
query ListSchools(
$filter: ModelSchoolFilterInput
$limit: Int
$nextToken: String
) {
listSchools(filter: $filter, limit: $limit, nextToken: $nextToken) {
items {
id
name
admins {
id
name
createdAt
updatedAt
owner
}
classes {
nextToken
}
members {
nextToken
}
createdAt
updatedAt
}
nextToken
}
}
`;
控制台中數據的 output 如下所示:-
{
"data":{
"listSchools":{
"items":[],
"nextToken":null,
"__typename":"ModelSchoolConnection"
}
},
"loading":false,
"networkStatus":7,
"stale":false
}
如您所見, items 是一個空數組。 但目前我的 dynamoDB 表中有 3 個項目:-
我究竟做錯了什么?
我檢查了這些區域,看看它是否正在查詢不同的區域,但它正在檢查正確的區域,所以我應該看到結果。 另外,如果我們查詢錯誤的表,它不會拋出錯誤嗎?
我想到了。 問題出在 GraphQL 架構定義中,我將 @auth 參數設置為僅允許某個管理員訪問列表,這就是我返回空數組的原因。 我刪除了@auth 參數,它現在返回正確的項目列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.