在vue.js客户端中合并来自不同graphql解析器的数据,以进行简单输出

时间:2019-07-13 13:59:31

标签: vuejs2 graphql apollo graphql-js vue-apollo

我确实通过一个查询从api查询汽车,但有两个解析器(列表和列表)(希望解析器是它的正确名称)。我通过列表获得ID的一辆车,而通过列表获得没有过滤器的另一辆车。解析器在服务器端以略微不同的结构输出数据,但我确实在不同的“位置”获得了相同的字段。我想合并结构以获得单个数组,我可以简单地在vue.js中循环。对于apicall,我确实使用vue-apollo。

找不到任何信息可以在graphqlqueries内部合并数据客户端。我发现的所有内容都是使用解析器在服务器端进行处理,但这是我不拥有的api。

是否可以使用graphql进行合并,还是必须将其合并到vue组件中?如果是,最好的方法是什么?

输出将是一个汽车网格,其中我显示了本周的汽车(由id请求)以及有关cardealer的最新汽车。

完整的屏幕截图,包括回复https://i.imgur.com/gkCZczY.png

精简示例,仅显示ID:

query CarTeaser ($guid: String! $withVehicleDetails: Boolean!) {
    search {
        listing(guid: $guid){
            details{
                identifier{
                    id #for example: here I get the id under details->identifier 
                }
            }
        }
        listings( metadata: { size: 2 sort:{ field: Age order: Asc}}) {
            listings{
                id #here it's right under listings 
                details{
                    …
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

理想情况下,您应该在服务器端进行处理,但是,如果不是您的API,则唯一的解决方案是在客户端(即在组件中)操作数据。

--no-dependencies数组保持不变,而将listings元素与之合并,可能要简单得多,例如:

listing