我有一个注册用的api,它返回字符串或null错误
error: 'Email already use' or error: null
如何在架构中构建它?我现在所拥有的是:
const typeDefs = gql`
type Mutation {
signUp(email: String, password: String): String
}
`;
由于typeof null是对象,如何在graphql中使其像这样?
signUp(email: String, password: String): String || Object
帮助?
答案 0 :(得分:1)
GraphQL有一个standard syntax for returning error values,您的架构无需直接考虑这一点。
在您的模式中,我将“无条件”返回您通常希望返回的任何类型:
type UserAccount { ... }
type Query {
me: UserAccount # or null if not signed in
}
type Mutation {
signUp(email: String!, password: String!): UserAccount!
}
如果操作失败,您将获得一个空字段值(即使理论上该模式认为不应这样做)和一个错误。
{
"errors": [
{
"message": "It didn’t work",
"locations": [ { "line": 2, "column": 3 } ],
"path": [ "signUp" ]
}
]
}
答案 1 :(得分:0)
在GraphQL中,您可以定义哪些字段可以为null
,哪些不能。
看一下文档:
https://graphql.org/learn/schema/#object-types-and-fields
字符串是内置标量类型之一-这些类型的 解析为单个标量对象,并且不能在其中进行子选择 查询。我们将在以后再讨论标量类型。
字符串!表示该字段不可为空,这表示GraphQL服务承诺 在查询此字段时始终为您提供一个值。在类型 语言,我们将代表那些带有感叹号的人。
因此,对于您的架构,String绝对可以。可以为空
type Mutation {
signUp(email: String, password: String): String
}