在解决AppSync/Amplify查询使用参数错误时,出现“Validation error of type FieldUndefined”的错误通常表示查询中使用了未定义的字段。
下面是解决此错误的几种方法:
检查查询的字段名是否正确:确保查询中使用的字段名与GraphQL模式中定义的字段名完全匹配。包括大小写和拼写的准确性。
检查查询的模式定义:如果查询中使用的字段是通过模式定义的,则确保模式定义中包含该字段。如果没有定义该字段,请添加到模式中。
检查查询的别名:如果在查询中使用了字段别名,请确保别名与模式中定义的字段名匹配。
下面是一个使用Amplify和AppSync的代码示例,展示了如何正确使用查询参数:
import { API, graphqlOperation } from 'aws-amplify';
const getUser = `query GetUser($id: ID!) {
getUser(id: $id) {
id
name
email
}
}`;
const userId = '123';
API.graphql(graphqlOperation(getUser, { id: userId }))
.then(response => {
const user = response.data.getUser;
console.log('User:', user);
})
.catch(error => {
console.error('Error:', error);
});
在上面的例子中,我们使用getUser
查询来获取用户的信息。注意查询参数$id
的使用以及getUser
查询中的字段名和模式定义的一致性。
如果仍然遇到问题,可以进一步检查AppSync控制台中的模式定义和查询日志,以获得更详细的错误信息。