javascript - 如何获取初始 GeoFire 值

标签 javascript firebase firebase-realtime-database geocoding geofire

我在 geofire-js 上遇到了一些问题.

我的应用程序中有两种不同类型的用户。用户和 worker 。 基本上,用户发布的职位和工作人员都可以看到这些职位。但我只想向与当前用户关系密切的工作人员显示职位。

因此,在创建作业并将其提交到 firebase 后,我从用户客户端向 geofire 进行查询,以获取他周围的所有用户:

function getNearbyUsers(job) {
  let ref = firebase.database().ref('/geofire/workerUsers');

  let geoFire = new GeoFire(ref);

  let geoQuery = geoFire.query({
    center: [job.lat, job.lng],
    radius: 4
  });

  // How do I get initial data from here?

  geoQuery.on("ready", function() {
    console.log("GeoQuery has loaded and fired all other events for initial data");
  });

  geoQuery.on("key_entered", function(key, location, distance) {
    console.log(key + " entered query at " + location + " (" + distance + " km from center)");
  });

  geoQuery.on("key_exited", function(key, location, distance) {
    console.log(key + " exited query to " + location + " (" + distance + " km from center)");
  });

  geoQuery.on("key_moved", function(key, location, distance) {
    console.log(key + " moved within query to " + location + " (" + distance + " km from center)");
  });
}

现在在我看来,我只能监听移入查询区域的按键以及离开查询区域的按键。太棒了。

但是我如何获取初始数据? (来自已在查询区域内的用户)

这是我在数据库中的一些虚拟 WORKER 用户的图片,它显然位于查询区域内。

enter image description here

如果它很明显并且我错过了一些东西,我很抱歉。

最佳答案

当您创建地理查询时,key_entered 事件会立即针对范围内已有的每个键触发。

documentation确实没有明确提及这一点。但是当您运行代码时,您会发现它立即为您提供了相关的 key 。

关于javascript - 如何获取初始 GeoFire 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45773287/

相关文章:

javascript - 使用函数作为函数的参数 : why use of anonym function?

javascript - 在 Mozilla Persona 中登录后如何更新 loggedInUser

node.js - NodeJS Firestore 身份验证 - 权限被拒绝

Android Firebase 数据库查询选择条件

swift - 快速检索所有数据值 firebase

javascript - 单击信息窗口内的按钮后更改谷歌地图标记属性

javascript - 在 Windows Phone 上禁用双击缩放

javascript - 如何在将图片上传到 Firebase 存储后检索下载 Url,以便将其保存到 Firebase 数据库?

android - 获取太多数据时如何摆脱卡住屏幕

swift - Firebase 规则 - 仅限于特定用户还是仅在获得授权的情况下?