【问题标题】:Apollo subscription with graph.cool and Algolia使用 graph.cool 和 Algolia 订阅 Apollo
【发布时间】:2017-09-01 11:41:57
【问题描述】:

现在我有了带有 MongoDB 地理索引的 Meteor 应用程序。

我正在使用这种 pub/sub:

 Meteor.publish('items', function itemsPublication(NELat, NELong, SWLat, SWLong) {

  return Items.find({
    $and: [
        {
            'till': {
                $gte: new Date()
            }
        },
        {
            'o': { $geoWithin: { $box: [ [ SWLong,SWLat], [ NELong, NELat] ] }  }
        }

    ]
   }, {
     fields: {
        o: 1,
        t: 1,
     }
   })
})

并且我添加了一些索引,例如:

Item._ensureIndex({
    'till':1, 'o': '2dsphere' 
})

一切正常...

主要问题是:是否可以将 Meteor pub/sub + MongoDB Geo-indexes 更改为 Apollo subs + graph.cool 作为后端 + Algolia 超快速地理搜索?

我需要真正的反应,而不需要轮询或其他东西......

【问题讨论】:

    标签: meteor algolia apollo graphcool


    【解决方案1】:

    Graphcool 目前不原生支持空间查询。由于这个原因,您将无法从 Meteor 获得您习惯的反应式体验,而 Graphcool 支持其他数据类型。我们对此有一个开放的功能请求,合并后 Graphcool 在这方面将与 Apollo 相提并论。

    也就是说,在等待原生支持时,您可以通过以下方式使用 Algolia 实施解决方法:

    1) 为地理查询设置 Algolia 集成,如下所述https://www.graph.cool/docs/tutorials/algolia-auto-syncing-for-graphql-backends-aroozee9zu/#algolia-geosearch

    2) 设置 GraphQL 订阅,监听您感兴趣的模型的 Create、Update、Delete 事件

    3) 收到事件后,查询Algolia索引获取最新结果

    【讨论】:

    【解决方案2】:

    您可能需要查看apollo-link-algolia 以直接从客户端将 Algolia 服务与 Apollo 一起使用。这个包是algoliasearch-helper-js 的简单包装。 如果你想用它来执行地理查询,它就像在 GraphQL 中创建以下查询一样简单:

    const LOCATIONS_QUERY = gql`
      query LocationsQuery {
        locationsInRadius @algolia(index: "dev_LOCATIONS", aroundLatLng: "40.71, -74.01", aroundRadius: 1000)
      }
    `
    

    【讨论】:

      猜你喜欢
      • 2020-04-23
      • 2019-05-19
      • 2017-09-01
      • 2017-09-19
      • 2020-10-08
      • 2020-11-08
      • 2019-12-05
      • 2019-04-28
      • 2022-12-12
      相关资源
      最近更新 更多