如何使用 ApolloQuery Vue 组件查询 Elasticsearch 端点?
How to use ApolloQuery Vue component to query an Elasticsearch endpoint?
我在我的 Nuxt 项目上使用 Apollo Client 来查询 GraphQL 端点并且效果很好。但现在,我需要查询 AWS 上的 Elasticsearch 端点。我将如何使用现有的 Apollo 客户端查询此端点?
您不应直接从 Vue 组件查询 ElasticSearch。您应该查询您的 ApolloGraph 服务器,它将查询您的 ElasticSearch 端点和 return 该查询的结果。
您可以从解析器内部查询 Elasticsearch。 ApolloGraphQL 解析器接受一个承诺作为结果,并将等待这个承诺得到解决。
如果您有这样的解析器:
const resolvers = {
Query: {
user(parent, args, context, info) {
let bar = args.id;
return queryElasticSearch(bar)
}
}
}
(供参考:https://www.apollographql.com/docs/apollo-server/data/resolvers/)
ElasticSearch 有这个客户端,您可以连接它来查询您的端点:https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/client-usage.html
在 queryElasticSearch 中你可以有这样的东西:
async function queryElasticSearch(bar){
const result = await client.search({
index: 'my-index',
body: { foo: bar }
})
return result;
}
我在我的 Nuxt 项目上使用 Apollo Client 来查询 GraphQL 端点并且效果很好。但现在,我需要查询 AWS 上的 Elasticsearch 端点。我将如何使用现有的 Apollo 客户端查询此端点?
您不应直接从 Vue 组件查询 ElasticSearch。您应该查询您的 ApolloGraph 服务器,它将查询您的 ElasticSearch 端点和 return 该查询的结果。
您可以从解析器内部查询 Elasticsearch。 ApolloGraphQL 解析器接受一个承诺作为结果,并将等待这个承诺得到解决。
如果您有这样的解析器:
const resolvers = {
Query: {
user(parent, args, context, info) {
let bar = args.id;
return queryElasticSearch(bar)
}
}
}
(供参考:https://www.apollographql.com/docs/apollo-server/data/resolvers/)
ElasticSearch 有这个客户端,您可以连接它来查询您的端点:https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/client-usage.html
在 queryElasticSearch 中你可以有这样的东西:
async function queryElasticSearch(bar){
const result = await client.search({
index: 'my-index',
body: { foo: bar }
})
return result;
}