如何将 GraphQL 中的对象元素推送到 javascript 对象中的嵌套数组中?

Posted

技术标签:

【中文标题】如何将 GraphQL 中的对象元素推送到 javascript 对象中的嵌套数组中?【英文标题】:How do I push object elements from GraphQL into nested array in javascript object? 【发布时间】:2020-06-21 17:18:24 【问题描述】:

我目前确实像这样映射 GraphQL 数据:

  const plotDataArray = data.allWordpressWpPlots.edges.map(plot => (    

    
      geometry: 
        type: plot.node.properties.geotype,
        coordinates: [
          [
            plot.node.coordinates[0].coord.split(",").reverse(),
            plot.node.coordinates[1].coord.split(",").reverse(),
            plot.node.coordinates[2].coord.split(",").reverse(),
            plot.node.coordinates[3].coord.split(",").reverse(),
            plot.node.coordinates[4].coord.split(",").reverse()
          ]
        ]
      
    
  )) 

我使用的 GraphQL 查询如下所示:

query 
  allWordpressWpPlots 
    edges 
      node 
        coordinates 
          coord
        
      
    
  

..GraphiQL 的输出如下所示:


  "data": 
    "allWordpressWpPlots": 
      "edges": [
        
          "node": 
            "coordinates": [
              
                "coord": "56.064655444812,9.6949704566207"
              ,
              
                "coord": "56.064575958599,9.6994982706574"
              ,
              
                "coord": "56.06046088577,9.6994719476694 "
              ,
              
                "coord": "56.060440367157,9.6951515896261"
              ,
              
                "coord": "56.064655444812,9.6949704566207"
              
            ]
          
        
      ]
    
  

map 函数确实以正确的格式返回对象,但我的问题是 GrapQL 中的“坐标”节点的长度不同。我想使用基于数组长度的 foreach 循环遍历节点,但是当我尝试在 map 函数中使用 javascript 时出现语法错误。

如何从 GraphQL 构建一个包含 X 个对象元素的“坐标”数组?

【问题讨论】:

【参考方案1】:

您可以嵌套map 调用。不太清楚为什么coordinates 是另一个数组中的一个数组,但保持原样:

const plotDataArray = data.allWordpressWpPlots.edges.map(plot => (
  geometry: 
    type: plot.node.properties.geotype,
    coordinates: [
      plot.node.coordinates.map(coordinate => 
        return coordinate.coord.split(",").reverse()
      ),
    ]
  ,
))

【讨论】:

以上是关于如何将 GraphQL 中的对象元素推送到 javascript 对象中的嵌套数组中?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免在对象内部创建对象并使用猫鼬将元素直接推送到快速数组中?

我需要使用 graphql 将数组数据推送到 mongodb

如何将 JSON 对象推送到 postgresql 中 jsonb 列中的数组

如何通过一次调用将一组对象推送到猫鼬中的数组中?

如何通过一次调用将一组对象推送到猫鼬中的数组中?

如何在 MySQL 中将元素推送到 JSON