我使用真实的数据库作为firebase,我使用geofire javascript包从firebase获得附近的数据。但有时它会自动给出错误,如:
RangeError: Maximum call stack size exceeded
at ChildrenNode.isLeafNode (api/node_modules/firebase-admin/node_modules/@firebase/database-compat/dist/index.standalone.js:8956:50)
at ChildrenNode.equals (api/node_modules/geofire/dist/geofire/index.cjs.js:8461:24)
这是我使用geofire从firebase实时数据库查找附近事物的示例查询
while (some amount) {
geoDriverId = await(new Promise((resolve, reject) => {
try {
geoDriverId = []
geoDriverIds = []
const geoQuery = config.firebase.table.query({
center: [parseFloat(pick_up_latitude), parseFloat(pick_up_longitude)],
radius: i
})
let listener = geoQuery.on("key_entered", (key, location, distance) => {
geoDriverIds.push({ key, distance });
});
geoQuery.on("ready", (key, location, distance) => {
listener.cancel();
geoQuery.cancel();
resolve(geoDriverIds);
return;
});
} catch (e) {
console.log("e", e)
}
}))
}
1条答案
按热度按时间db2dz4w81#
如果目的是轮询查询的初始结果,请考虑使用下面的方法(这实际上就是您在问题中提供的代码,经过清理并转换为一个方法):
用法:
要按与中心点的距离对结果进行排序:
如果目的是仅查找最接近的结果,则可以使用以下方法逐步搜索结果:
用法: