使用数组过滤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