• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

使用数组过滤Firebase查询?

swift 来源:winston 4次浏览

我创建一个简单的火种克隆学习火力地堡,我不知道如何过滤器添加到这个火力地堡查询(我使用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


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)