我有这种类型:
type Profile {
id: ID! @isUnique
email: String! @isUnique
...
}
和查询:
profile(email: String!):Profile
当我以不存在的用户身份运行查询时,我的基础解析器返回null,并且我期望GraphQL像这样。
但是,我收到此错误:
Cannot return null for non-nullable field Profile.id.
发生这种情况是因为期望查询返回一个Profile
,并且一个Profile
必须具有id
字段。
但是,查询的返回类型不是不可为空的Profile!
,而是Profile
,这意味着查询可能不返回任何内容。
如何正确解决此问题?
答案 0 :(得分:0)
尝试在个人资料查询解析器中返回export const hideServerErrors = () => ({
type: HIDE_SERVER_ERRORS,
});
。如果返回类似空对象的内容,则配置文件解析器将对此进行选择,并尝试将null
返回为undefined
,正如您指出的那样,这是一个模式错误。
尝试这样的事情:
Profile.id
您的graphQL响应将如下所示
const queryProfileResolver = (_, { email }) => {
// getProfileByEmail should return null if no match is found
return getProfileByEmail(email)
}
答案 1 :(得分:0)
首先,您需要删除数据库并使用
types.graphql
原样
type Profile {
id: ID! @isUnique
email: String! @isUnique
...
}
部署它,错误就会消失。
发生这种情况的主要原因是您已经部署了不为null的数据,因此无法更改,您需要删除我们的数据库,就是这样