使用 aws AppSync 的 Vue.js 存在类型为 Unknown Type 的 GraphQL 验证错误



我让这个查询在 AppSync 控制台中完美运行,没有问题:

query listTftTeamCombos {
listTftTeamCombos {
items {
sortId
teamId
}
}
}

但是当我尝试在 Vue.js 的本地 ide 中使用它时,它给了我验证错误:

Validation error of type UnknownType: Unknown type TableTftTeamComboFilterInput

我设法提出了两个查询,但没有一个有效:

export const test1 = /* GraphQL */ `
query ListTftTeamCombos(
$filter: TableTftTeamComboFilterInput
$limit: Int
$nextToken: String
) {
listTftTeamCombos(filter: $filter, limit: $limit, nextToken: $nextToken) {
items {
sortId
teamId
}
nextToken
}
}
`;

第二个查询:

export const test2 = /* GraphQL */ `
query ListTftTeamCombos{
items: {
sortId: $sortId
teamId: $teamId
}
}

这是来自 AppSync 控制台的原始架构。(在生成 schema.graphql 之前,它很长且未读。

input CreateTftTeamComboInput {
sortId: String!
teamId: String!
}
input DeleteTftTeamComboInput {
sortId: String!
teamId: String!
}
type Mutation {
createTftTeamCombo(input: CreateTftTeamComboInput!): TftTeamCombo
updateTftTeamCombo(input: UpdateTftTeamComboInput!): TftTeamCombo
deleteTftTeamCombo(input: DeleteTftTeamComboInput!): TftTeamCombo
}
type Query {
getTftTeamCombo(teamId: String!, sortId: String!): TftTeamCombo
listTftTeamCombos(filter: TableTftTeamComboFilterInput, limit: Int, nextToken: String): TftTeamComboConnection
}
type Subscription {
onCreateTftTeamCombo(sortId: String, teamId: String): TftTeamCombo
@aws_subscribe(mutations: ["createTftTeamCombo"])
onUpdateTftTeamCombo(sortId: String, teamId: String): TftTeamCombo
@aws_subscribe(mutations: ["updateTftTeamCombo"])
onDeleteTftTeamCombo(sortId: String, teamId: String): TftTeamCombo
@aws_subscribe(mutations: ["deleteTftTeamCombo"])
}
input TableBooleanFilterInput {
ne: Boolean
eq: Boolean
}
input TableFloatFilterInput {
ne: Float
eq: Float
le: Float
lt: Float
ge: Float
gt: Float
contains: Float
notContains: Float
between: [Float]
}
input TableIDFilterInput {
ne: ID
eq: ID
le: ID
lt: ID
ge: ID
gt: ID
contains: ID
notContains: ID
between: [ID]
beginsWith: ID
}
input TableIntFilterInput {
ne: Int
eq: Int
le: Int
lt: Int
ge: Int
gt: Int
contains: Int
notContains: Int
between: [Int]
}
input TableStringFilterInput {
ne: String
eq: String
le: String
lt: String
ge: String
gt: String
contains: String
notContains: String
between: [String]
beginsWith: String
}
input TableTftTeamComboFilterInput {
sortId: TableStringFilterInput
teamId: TableStringFilterInput
}
type TftTeamCombo {
sortId: String!
teamId: String!
}
type TftTeamComboConnection {
items: [TftTeamCombo]
nextToken: String
}
input UpdateTftTeamComboInput {
sortId: String!
teamId: String!
}

文件schema.json是使用命令自动生成的amplify add codege我没有更改它。

我应该修改 schema.json 以使我的查询正常工作,还是在构造查询时犯了错误?

提前谢谢。

根据你提供的信息,你的 Vue 查询和 GraphQL 模式不匹配,即 TableTftTeamComboFilterInput 没有在你的模式中定义。您在 AppSync 中的查询正常工作,因为您未向其提供任何输入,因此没有验证错误。关于这一点,您的第二个查询应如下所示:

export const test2 = /* GraphQL */ `
query listTftTeamCombos {
listTftTeamCombos {
items {
sortId
teamId
}
}
}

我认为您如何进行查询存在问题。

相关内容

最新更新