我正在实现 GraphQL,以使用网络驱动程序从网络查询数据。
我的问题是我无法弄清楚如何使用一个参数作为 2 个不同查询的输入。所以基本上它是从 2 个不同的站点查询数据,并具有相同的输入,通常是 4 个字符符号。
我希望我的查询是什么样的。
{
Webpage1(symbol:"AABC"){
data_from_site,
some_other_data
Webpage2(symbol:"AABC"){ ##get rid of this Double attribute entry
data_from_page2
}
}
}
如何仅传递一个参数 be 并从两个站点获取数据? 因此它将位于根上下文中供解析器使用。
我对 GraphQL 相当陌生,并尝试定义单独的 GraphQLObjectType 来解决这个问题。但我真正想要的是同一对象中的统一数据以及从父对象解析的参数。
var schema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'Query',
fields: {
Webpage1: {
type: Website1,
args: {
symbol: { type: GraphQLString },
//date: { type: GraphQLString }
},
resolve: function (_, { symbol }) {
return {
symbol
};
}
},
Webpage2: {
type: History,
resolve: function (_, { symbol }) {
return {
symbol
};
}
}
}
})
})
最佳答案
如果我正确理解您的问题,您可以保持架构不变,并在发送查询时使用变量:
query MyQuery($mySymbol: String){
Webpage1(symbol:$mySymbol) {
data_from_site
some_other_data
}
Webpage2(symbol:$mySymbol) {
data_from_page2
}
}
变量在文档顶部定义,作为操作定义的一部分。一旦定义,它们就可以在文档中任何需要使用相同类型文字值的地方使用任意多次。你可以查看官方关于变量的教程here和规范 here .
关于javascript - 如何使用相同的参数查询 Graphql 2 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199362/