通过连接反应放大查询
React Amplify query with connection
我目前正在使用 Amplify Cli 构建 React 应用程序。
schema.graphql
type Ticket @auth(rules: [{ allow: owner, operations: [create, update, delete] }]) @model @searchable {
id: ID!
location: String
city: String
comment: String
owner: String
startDate: String
endDate: String
status: String
request: [Request] @connection(keyName: "byRequest", fields: ["id"])
}
type Request @auth(rules: [{ allow: owner, operations: [create, update, delete] }]) @model @searchable @key(name: "byRequest", fields: ["ticketID"]) {
id: ID!
ticketID: ID!
requester: String
}
相关 searchTickets 查询的 amplify 生成的代码
export const searchTickets = /* GraphQL */ `
query SearchTickets(
$filter: SearchableTicketFilterInput
$sort: SearchableTicketSortInput
$limit: Int
$nextToken: String
) {
searchTickets(
filter: $filter
sort: $sort
limit: $limit
nextToken: $nextToken
) {
items {
id
location
city
comment
owner
startDate
endDate
status
request {
nextToken
}
}
nextToken
total
}
}
`;
当我尝试在 Appsync 中查询数据时,结果如预期的那样包含了请求者的数组。
query {
searchTickets {
items{
location
owner
request {
items{
requester
}
}
}
}
}
现在我正在为 React 代码苦苦挣扎,因为不包括请求者的数组。其余代码工作正常,我从 Ticket (location, city...) 获取所有数据,但不是 "Request" 类型的数据。
反应查询代码:
await API.graphql(
graphqlOperation(queries.searchTickets, {
limit, // limit is set in a const
sort: {
field: 'startDate',
direction: 'asc'
},
filter: {
location: {
eq: location
},
city: {
eq: city
}
}
})
)
.then(payload => {
const data = payload.data.searchTickets.items;
setTickets(tickets => tickets.concat(data));
})
.catch(err => {
console.log('error: ', err);
});
知道为什么 "Request" 数组是空的,或者我如何通过 searchTickets 查询访问 "Request" 类型的数据?
谢谢!
PS:如果需要,我很乐意提供更多code/information。
你有 .graphqlconfig.yml 文件吗?请检查放大的深度。
projects:
<YOUR_PROJECT_NAME>:
extensions:
amplify:
maxDepth: <CHANGE_THIS>
可以使用 amplify configure codegen
通过 cli 配置查询深度。它现在包含在 official documentation
我目前正在使用 Amplify Cli 构建 React 应用程序。
schema.graphql
type Ticket @auth(rules: [{ allow: owner, operations: [create, update, delete] }]) @model @searchable {
id: ID!
location: String
city: String
comment: String
owner: String
startDate: String
endDate: String
status: String
request: [Request] @connection(keyName: "byRequest", fields: ["id"])
}
type Request @auth(rules: [{ allow: owner, operations: [create, update, delete] }]) @model @searchable @key(name: "byRequest", fields: ["ticketID"]) {
id: ID!
ticketID: ID!
requester: String
}
相关 searchTickets 查询的 amplify 生成的代码
export const searchTickets = /* GraphQL */ `
query SearchTickets(
$filter: SearchableTicketFilterInput
$sort: SearchableTicketSortInput
$limit: Int
$nextToken: String
) {
searchTickets(
filter: $filter
sort: $sort
limit: $limit
nextToken: $nextToken
) {
items {
id
location
city
comment
owner
startDate
endDate
status
request {
nextToken
}
}
nextToken
total
}
}
`;
当我尝试在 Appsync 中查询数据时,结果如预期的那样包含了请求者的数组。
query {
searchTickets {
items{
location
owner
request {
items{
requester
}
}
}
}
}
现在我正在为 React 代码苦苦挣扎,因为不包括请求者的数组。其余代码工作正常,我从 Ticket (location, city...) 获取所有数据,但不是 "Request" 类型的数据。
反应查询代码:
await API.graphql(
graphqlOperation(queries.searchTickets, {
limit, // limit is set in a const
sort: {
field: 'startDate',
direction: 'asc'
},
filter: {
location: {
eq: location
},
city: {
eq: city
}
}
})
)
.then(payload => {
const data = payload.data.searchTickets.items;
setTickets(tickets => tickets.concat(data));
})
.catch(err => {
console.log('error: ', err);
});
知道为什么 "Request" 数组是空的,或者我如何通过 searchTickets 查询访问 "Request" 类型的数据?
谢谢!
PS:如果需要,我很乐意提供更多code/information。
你有 .graphqlconfig.yml 文件吗?请检查放大的深度。
projects:
<YOUR_PROJECT_NAME>:
extensions:
amplify:
maxDepth: <CHANGE_THIS>
可以使用 amplify configure codegen
通过 cli 配置查询深度。它现在包含在 official documentation