和国外同行于10月8日至10日在纽约市相聚,学习关于 GraphQL 联邦和 API 平台工程的最新技巧、趋势和新闻。参加 2024 年纽约市 GraphQL 大会
文档
免费开始
您正在查看此软件旧版本的文档。 切换到最新稳定版本。

强制不可为null

使用@nonnull指令


因为允许非常细粒度的错误处理,并且在执行过程中可能返回不同的错误,因此许多即使在这些字段不发生错误时也不应为null,但仍然暴露了可空字段。

通常情况下,这是relay连接的情况

type FilmConnection {
# films is nullable here
films: [Film]
}

支持 @nonnull 客户端 。任何 使用 @nonnull 注释的都将使 Kotlin 中的其非空,即使在 GraphQL 模式。下面的 :

query AllFilms {
allFilms @nonnull {
films @nonnull {
title @nonnull
}
}
}

将生成以下模型

// All fields are non-nullable
data class Data(val allFilms: AllFilms)
data class AllFilms(val films: List<Film?>)
data class Film(val title: String)

这样,消费代码在访问标题时不必使用安全调用

val title = data.allFilms.films[0]?.title

(注意:Film列表中的单个 影片仍然是可为空的,只有 字段本身被设置为非空。

如果你知道每个 FilmConnection 将有一个非空影片字段,为每个 查询这样做将是冗余的。

创建一个 extensions.graphqls 文件,放在你的 schema.[graphqls|sdl|json] 旁边:

# Make the 'film' field always non-nullable
extend type FilmConnection @nonnull(fields: "films")
上一页
上传文件
下一页
使用别名
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,即Apollo GraphQL。

隐私政策

公司