首页 文章

使用数组过滤Firebase查询?

提问于
浏览
0

我正在创建一个简单的Tinder克隆来学习Firebase,我不确定如何为此Firebase查询添加过滤器(我使用GeoFire在半径内搜索):

//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)'")

我需要过滤掉当前用户已经接受/拒绝的用户 . 我可以为当前用户添加一个包含已接受/已拒绝用户的数组,但我担心每次在查询中返回子进行迭代时都会占用大量数据 .

1 回答

  • 0

    你需要有一系列匹配/拒绝 . 您可以在用户对象中存储一个数组以进行拒绝和匹配,但是您需要使用firebase安全规则,这样您就可以选择向具有匹配列表的用户公开哪些数据/拒绝用户ID .

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

    如果您按照我在此处建议的方式进行操作,当您创建用户卡列表进行滑动时,您只需使用通配符(Firebase在技术上不支持通配符,但是他们的文档解释了解决方法)用户ID,然后设置在潜在匹配被拒绝数组中找不到当前用户ID的位置 . 我已将过滤文档作为参考链接 .

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

相关问题