这个错误通常是由于GraphQL查询中的变量缺失或为null导致的。在处理查询时,GraphQL会强制执行NonNull类型的变量,如果变量为null,则会抛出上述错误。
为了解决这个问题,您需要检查您的代码,并确保所有必需的变量都被正确地传递给GraphQL查询。您还可以在定义变量类型时,将它们定义为Nullable类型,而不是NonNull类型,以容错Null值。
以下示例演示如何查询GraphQL时,避免这个错误:
import { API, graphqlOperation } from 'aws-amplify'
const getMyData = async (input) => {
const result = await API.graphql(graphqlOperation(`
query GetData($input: MyInputType!) {
getData(input: $input) {
field1
field2
}
}
`, { input }))
return result.data.getData
}
// 注意,这里的input类型为 MyInputType!,非空类型
如果我们现在调用getMyData()
并传入一个缺失的或null的input
,它会抛出上述错误。要避免这种情况,我们可以将MyInputType
定义为非强制类型,如下所示:
// 注意,这里的input类型为 MyInputType,可空类型
type MyInputType {
field1: String
field2: Int
}
const getMyData = async (input) => {
const result = await API.graphql(graphqlOperation(`
query GetData($input: MyInputType) {
getData(input: $input) {
field1
field2
}
}
`, { input }))
return result.data.getData
}
现在,即使我们调用getMyData()
时没有传入input
,它也不会抛出任何错误。