Graphql 为什么博士后';s<;X>;连接类型是否允许在其节点列表中为空?

Graphql 为什么博士后';s<;X>;连接类型是否允许在其节点列表中为空?,graphql,postgraphql,Graphql,Postgraphql,如果我有表X,为什么XConnection的Postgraphile生成的模式允许在返回的列表中使用null 键入XConnection{nodes:[X]!} 而不是 键入XConnection{nodes:[X!]!} 我无法给出示例,说明allXs查询或与X的任何1-N关系在列表中有意义地使用null。这会转化为一个选项或可能在一种类型化语言中键入,这会使导航变得麻烦,所以我想知道它什么时候会是null 为什么allXs返回XConnection(允许空列表)而不是XConnectio

如果我有表
X
,为什么
XConnection
的Postgraphile生成的模式允许在返回的列表中使用null

键入XConnection{nodes:[X]!}

而不是

键入XConnection{nodes:[X!]!}

我无法给出示例,说明
allXs
查询或与
X
的任何1-N关系在列表中有意义地使用
null
。这会转化为一个
选项
可能
在一种类型化语言中键入,这会使导航变得麻烦,所以我想知道它什么时候会是
null

为什么
allXs
返回
XConnection
(允许空列表)而不是
XConnection?此处的
null
是否与空
[]
相同


谢谢

原因是
create function x()返回my_table的集合…
函数可以返回空值和表行。在我看来,这样做是一种不好的做法。如果您同意,并且可以承诺不这样做,那么您可以使用“no set of functions contain nulls”标志添加您询问的缺少的not null

-N, --no-setof-functions-contain-nulls
if none of your RETURNS SETOF compound_type functions mix NULLs with the results 
then you may enable this to reduce the nullables in the GraphQL schema
(我是博士后维护人员,并添加了此选项。)


对于根级别字段
allXs
;在GraphQL模式中,所有根级别字段都可以为空是一种很好的做法,因为如果它们不能为空,并且一个根级别字段失败(例如SQL查询失败,或者DB现在不可用),那么整个GraphQL结果将为空,而不仅仅是失败的字段。GraphQL非常擅长将故障限制在较小的区域,因此采用了“默认为空”的方法。

原因是
create function x()返回my_table的集合…
函数可以返回空值以及表行。在我看来,这样做是一种不好的做法。如果您同意,并且可以承诺不这样做,那么您可以使用“no set of functions contain nulls”标志添加您询问的缺少的not null

-N, --no-setof-functions-contain-nulls
if none of your RETURNS SETOF compound_type functions mix NULLs with the results 
then you may enable this to reduce the nullables in the GraphQL schema
(我是博士后维护人员,并添加了此选项。)


对于根级别字段
allXs
;在GraphQL模式中,所有根级别字段都可以为空是一种很好的做法,因为如果它们不能为空,并且一个根级别字段失败(例如SQL查询失败,或者DB现在不可用),那么整个GraphQL结果将为空,而不仅仅是失败的字段。GraphQL非常擅长将故障限制在小范围内,因此采用了“默认为空”的方法。

我在这里更深入地解释了为什么PostGraphile模式的各个部分都可以为空:(包括使部分不可为空的提示)我在这里更深入地解释了为什么PostGraphile模式的各个部分可以为null:(包括使部分不可为null的提示)