我已经创建了这个GraphQL模式,并通过Amplify将其传递给AppSync:
type Member @model {
id: ID!
name: String!
}
type Team @model {
id: ID!
title: String!
members: [Member]
}AWS Amplify为团队更新生成了以下变异:
export const updateTeam = /* GraphQL */ `
mutation UpdateTeam(
$input: UpdateTeamInput!
$condition: ModelTeamConditionInput
) {
updateTeam(input: $input, condition: $condition) {
id
name
...
}
}
`;我想通过以下方式更新团队:
const doSomething = async (id) => {
try {
const team = teams[id];
team.title = // new title
// cut off automatically added bits
const teamData = await API.graphql(
graphqlOperation(updateTeam, { input: team })
);
} catch (error) {
console.error(`Mutation failed`, error);
}
};我正在成功地读取team,并且可以看到members是team对象的一部分。但是,它会引发一个错误:
message: "The variables input contains a field name 'members' that is not defined for input object type 'UpdateTeamInput' "我应该在哪里以及如何解决这个问题?我的意思是,我必须这样做吗:
...
graphqlOperation(updateTeam, { input: team, members: team.members })
...尽管我没有接触到team[id]中的members对象
发布于 2021-07-02 12:49:12
这是因为您没有在graphql schema中将成员定义为input类型,而是将其定义为类型类型。
按如下方式定义成员输入类型:
input MemberInput {
id: ID!
name: String!
}在您的graphql模式中,它将会工作。
请注意,如果您的类型是自定义的,那么graphql中的参数应该是输入的类型和类型的返回值类型。
https://stackoverflow.com/questions/68219721
复制相似问题