【问题标题】:Adding additional children when setting in GeoFire Firebase?在 GeoFire Firebase 中设置时添加额外的孩子?
【发布时间】:2014-10-03 18:47:44
【问题描述】:

我正在尝试在 FB 中设置 geoFire 对象时设置其他信息。

类似:

geoFire.set(uniqueId, [latitude, longitude],{'message': message, 'iconUrl': iconURL, lastUpdate: Firebase.ServerValue.TIMESTAMP}).then(function () {
    //some stuff
};

我可以这样做,而且它大部分都有效(取决于数据库往返时间):

geoFire.set(uniqueId, [latitude, longitude],).then(function () {

    firebaseRef.child(uniqueId).update({'message': message, 'iconUrl': iconURL, lastUpdate: Firebase.ServerValue.TIMESTAMP});

    }) 

但是我的监听器触发太快并且没有捕获所有数据,因此它呈现时没有图标路径。

【问题讨论】:

  • 我用 hack 修复了它。它只是延迟触发器以允许在检索之前首先设置所有数据。不过,我更愿意一次性设置所有数据。

标签: firebase geofire


【解决方案1】:

我遇到了同样的问题,不想通过解决方法解决这个问题,特别是通过引入延迟,所以不断挖掘并发现:https://github.com/firebase/geofire-js/issues/40

这基本上意味着我们需要重组应用程序,其中一个集合专用于 GeoFire 信息,另一个使用相同的密钥来存储附加信息。来自 GitHub 的示例。

{
   geofire: {
      "-J9aZZl94Sx6h": { "g": <geohash>, "l": {} }
      "-Jhacf97x4S3h": { "g": <geohash>, "l": {} },
      ...
   },
   "locations": {
      "-J9aZZl94Sx6h": { <location-data> },
      "-Jhacf97x4S3h": { <location-data> }
   }
}

【讨论】:

  • 那是同性恋,所以任何位置更新都必须是它自己的集合,你不能直接让它成为现有集合的子节点吗?
猜你喜欢
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
相关资源
最近更新 更多