我正在尝试编写一个云函数,该函数可以返回特定位置附近的用户。 get_nearby()返回一个元组列表,其中包含用于geohash查询的上限和下限,然后此循环应查询firebase中那些geohash中的用户。
user_ref = db.collection(u'users')
db_response = []
for query_range in get_nearby(lat, long, radius):
query = user_ref.where(u'geohash', u'>=', query_range[0]).where(u'geohash', u'<=', query_range[1]).get()
for el in query:
db_response.append(el.to_dict())
由于某种原因,当我运行此代码时,即使其他三个文档的geohash与该文档相同,它也只会从数据库中返回一个文档。我知道文件在那里,当我要求整个收藏时,它们确实会退还。我在这里想念什么?
编辑: 该数据库当前有4条记录,该查询应返回其中3条:
{
{name: "Trevor", geohash: "dnvtz"}, #this is the one that gets returned
{name: "Test", geohash: "dnvtz"},
{name: "Test", geohash: "dnvtz"}
}
query_range是具有两个值的元组。下限和上限geohash。在这种情况下,它是(“ dnvt0”,“ dnvtz”)。
答案 0 :(得分:0)
我决定从数据库中清除所有文档,然后生成一组新的示例数据以供使用(无论如何,所有内容仅用于测试,不重要)。将新数据推送到Firestore后,一切正常。我唯一的假设是,即使字符串匹配,我也会对其中一些使用错误的编码。