GatsyJS,GraphQL-通过数组进行问题映射。

时间:2018-10-11 18:03:17

标签: javascript arrays reactjs gatsby

我正在用GatsbyJS构建一个分离的Drupal网站。我正在尝试显示nodePersonalInformation的标题。这是GatsbyJS graphQL游乐场中的查询:

--reflink=true

查询结果:

{
  allUserUser(filter: {name: {eq: "bobdole"}}) {
    edges {
      node {
        name
        relationships {
          nodePersonalInformation {
            title
          }
        }
      }
    }
  }
}

我使用这些变量成功显示了“名称”:

{
  "data": {
    "allUserUser": {
      "edges": [
        {
          "node": {
            "name": "bobdole",
            "relationships": {
              "nodePersonalInformation": [
                {
                  "title": "bobdole"
                },
                {
                  "title": "bobdole"
                }
              ]
            }
          }
        }
      ]
    }
  }
}

但是,因为“ nodePersonalInformation”是一个数组,所以我不知道如何显示“ title”。我已经试过.map里面的.map没有运气了。 任何帮助将不胜感激。

谢谢 安迪

1 个答案:

答案 0 :(得分:0)

您可以获取nodePersonalInformation中包含的两个标题属性,然后获取此数组的第一个元素。

为此,首先必须获得nodePersonalInformation
尝试

const titles = data.map(edge => edge.node.relationships.nodePersonalInformation.map(title => title)[0]);
该行末尾的

[0]仅允许获取第一个map的第一个结果。如果不这样做,则会得到一个数组数组。

之后,您可以在此行中获得所需的标题:
    const uniqueTitle = title[0]

如果您总是有一条边缘,也可以强制获得第一条边缘项目:
const data = this.props.data.edges[0]。这样,您获得标题数组时就不需要[0]