使用数组过滤Firebase查询?

我创建一个简单的火种克隆学习火力地堡,我不知道如何过滤器添加到这个火力地堡查询(我使用GeoFire到的半径范围内搜索):使用数组过滤Firebase查询?

//get closest user for next game within radius 

let center = CLLocation(latitude: latitude, longitude: longitude)

var circleQuery = geoFire.query(at: center, withRadius: 149.0)

var queryHandle = circleQuery?.observe(.keyEntered, with: { (key: String!, location: CLLocation!) in

print("Key '\(key)' entered the search area and is at location '\(location)'")

我需要过滤掉当前用户已经接受/拒绝的用户。我可以为当前用户添加一个包含已接受/已拒绝用户的数组,但是我担心每次在查询中返回一个子元素时都会遍历数组,这可能会消耗大量数据。

回答:

您需要拥有该匹配/拒绝数组。您可能会将数组存储在用户对象中以进行拒绝和匹配,但是您需要使用Firebase安全规则,以便您可以选择要公开给具有匹配列表的用户的数据/被拒绝的用户ID。

由于接受的列表存储在两个用户用户对象中,您最终还会得到有些重复的数据,但这就是firebase的性质。这样做不会导致任何性能问题或任何事情。

如果按照我在这里所建议的方式进行操作,当您创建用户卡刷卡列表时,您只需使用通配符(Firebase技术上不支持通配符,但其文档解释了一种方式围绕此)为用户标识,然后设置您的当前用户标识在潜在匹配拒绝数组中找不到的位置。我将过滤文档链接为参考。

https://firebase.google.com/docs/database/ios/lists-of-data#filtering_data

以上是 使用数组过滤Firebase查询? 的全部内容, 来源链接: utcz.com/qa/260470.html

回到顶部