Reactjs 如果字段为空,如何在graphql结果中显示NULL

Reactjs 如果字段为空,如何在graphql结果中显示NULL,reactjs,graphql,gatsby,strapi,Reactjs,Graphql,Gatsby,Strapi,我正在使用Strapi作为我在盖茨比的前端页面的cms 在Strapi中,我有一个内容类型页面。页面内容类型与所有其他内容类型存在多对多关系 因此,我有如下内容类型: query MyQuery { allStrapiPage { edges { node { footers { name } headers { name } } }

我正在使用Strapi作为我在盖茨比的前端页面的cms

在Strapi中,我有一个内容类型
页面
页面
内容类型与所有其他内容类型存在多对多关系

因此,我有如下内容类型:

query MyQuery {
  allStrapiPage {
    edges {
      node {      
        footers {
          name
        }
        headers {
          name
        }
      }
    }
  }
}
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": [
              {
                "name": "Footer ONE"
              }
            ]
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": null
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
  • 页数
  • 页脚
  • 标题
查询如下:

query MyQuery {
  allStrapiPage {
    edges {
      node {      
        footers {
          name
        }
        headers {
          name
        }
      }
    }
  }
}
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": [
              {
                "name": "Footer ONE"
              }
            ]
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": null
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
我得到了我应该得到的所有结果

因此,结果如下:

query MyQuery {
  allStrapiPage {
    edges {
      node {      
        footers {
          name
        }
        headers {
          name
        }
      }
    }
  }
}
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": [
              {
                "name": "Footer ONE"
              }
            ]
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": null
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
但是,如果我在上述查询的
页脚
页眉
内容类型中没有任何记录,我会得到如下错误:

query MyQuery {
  allStrapiPage {
    edges {
      node {      
        footers {
          name
        }
        headers {
          name
        }
      }
    }
  }
}
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": [
              {
                "name": "Footer ONE"
              }
            ]
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": null
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
那不是我想要的。如何在不存在的字段上获取null?因此,如果
footers
内容类型为空,我希望得到如下结果:

query MyQuery {
  allStrapiPage {
    edges {
      node {      
        footers {
          name
        }
        headers {
          name
        }
      }
    }
  }
}
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": [
              {
                "name": "Footer ONE"
              }
            ]
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
  "data": {
    "allStrapiPage": {
      "edges": [
        {
          "node": {
            "footers": null
          }
        },
        {
          "node": {
            "headers": [
              {
                "name": "Header one"
              }
            ]
          }
        },
     ]
   }
  }
}
我该怎么做


提前谢谢。

我刚加入,还不能对帖子发表评论,所以我会把这个放在回答部分。您是否检查过在模式中将页脚和页眉定义为可空字段?这可能会导致您的错误

我没有使用strapi,但您是否可以控制strapi后端?@RakeshJain只能通过他们的管理面板。如果可能,您可以在API上为页脚创建解析器,在那里您可以检查数据是否存在,如果不返回null。此外,如果页脚返回null,则需要确保页脚在模式中不严格,否则也会出错。这不是一个解决方案,而是我在遇到类似问题时决定采用的“简单”解决方法(使用Contentful,而不是Strapi)。我为我拥有的每种内容类型定义了“placelholders”。所有这些占位符的所有属性都已填充。然后,当我从
gatsby节点
获取内容来创建页面时,我有一个条件来检查被迭代的项是否是这些占位符中的一个,如果是,它只是忽略它。