AppSync graphql查询未返回预期数据
我有一个包含用户和事件的AppSync graphql模式,它应该具有双向连接。我的模式如下所示:AppSync graphql查询未返回预期数据,graphql,aws-amplify,aws-appsync,aws-amplify-cli,Graphql,Aws Amplify,Aws Appsync,Aws Amplify Cli,我有一个包含用户和事件的AppSync graphql模式,它应该具有双向连接。我的模式如下所示: type User @model { id: ID! email: String events: [EventUser] @connection(name: "EventUser", keyName: "byUser", fields: ["id"]) } type Event @model { id: ID! na
type User @model {
id: ID!
email: String
events: [EventUser] @connection(name: "EventUser", keyName: "byUser", fields: ["id"])
}
type Event @model {
id: ID!
name: String
description: String
registeredUsers: [EventUser] @connection(name: "EventUser", keyName: "byEvent", fields: ["id"])
invitedUsers: [User]
}
type EventUser
@model(queries: null)
@key(name: "byEvent", fields: ["eventId", "userId"])
@key(name: "byUser", fields: ["userId", "eventId"]) {
id: ID!
eventId: ID!
userId: ID!
event: Event! @connection(fields: ["eventId"])
user: User! @connection(fields: ["userId"])
}
export const listEvents = /* GraphQL */ `
query ListEvents(
$filter: ModelEventFilterInput
$limit: Int
$nextToken: String
) {
listEvents(filter: $filter, limit: $limit, nextToken: $nextToken) {
items {
id
name
description
registeredUsers {
nextToken
}
createdAt
updatedAt
}
nextToken
}
}
`;
query ListEvents {
listEvents( limit: 10) {
items {
id
name
registeredUsers {
items {
userId
}
}
}
}
}
CLI生成的查询如下所示:
type User @model {
id: ID!
email: String
events: [EventUser] @connection(name: "EventUser", keyName: "byUser", fields: ["id"])
}
type Event @model {
id: ID!
name: String
description: String
registeredUsers: [EventUser] @connection(name: "EventUser", keyName: "byEvent", fields: ["id"])
invitedUsers: [User]
}
type EventUser
@model(queries: null)
@key(name: "byEvent", fields: ["eventId", "userId"])
@key(name: "byUser", fields: ["userId", "eventId"]) {
id: ID!
eventId: ID!
userId: ID!
event: Event! @connection(fields: ["eventId"])
user: User! @connection(fields: ["userId"])
}
export const listEvents = /* GraphQL */ `
query ListEvents(
$filter: ModelEventFilterInput
$limit: Int
$nextToken: String
) {
listEvents(filter: $filter, limit: $limit, nextToken: $nextToken) {
items {
id
name
description
registeredUsers {
nextToken
}
createdAt
updatedAt
}
nextToken
}
}
`;
query ListEvents {
listEvents( limit: 10) {
items {
id
name
registeredUsers {
items {
userId
}
}
}
}
}
当我使用以下命令运行此查询时:
const result = await API.graphql(graphqlOperation(queries.listEvents, { limit: 10}))
我得到以下结果:
[
{
"createdAt": "2020-08-17T21:36:04.502Z",
"description": "Event description",
"id": "some-unique-id",
"name": "Event name",
"registeredUsers": Object {
"nextToken": null,
},
"updatedAt": "2020-08-17T21:36:04.502Z",
},
{
"createdAt": "2020-08-17T21:36:04.502Z",
"id": "some-other-unique-id",
"name": "event 2 name",
"registeredUsers": Object {
"nextToken": null, // <- This seems wrong.
},
"updatedAt": "2020-08-17T21:36:04.502Z"
}
]
并返回正确的结果:
{
"data": {
"listEvents": {
"items": [
{
"id": "some-unique-id",
"name": "event name",
"registeredUsers": {
"items": [
{
"userId": "user"
},
{
"userId": "user1"
}
]
}
},
{
"id": "some-other-unique-id",
"name": "event 2 name",
"registeredUsers": {
"items": []
}
},
]
}
}
}
显然,控制台查询略有不同,但它生成正确的结果,尽管它不处理nextToken
分页
我的问题是:CLI生成的查询是否无效?如果是,是因为我的模式设置不正确吗?
如果生成的查询有效,我将如何调用它来获取EventUser
数据