gpt4 book ai didi

swift - 使用数组过滤 Firebase 查询?

转载 作者:行者123 更新时间:2023-11-30 12:05:46 25 4
gpt4 key购买 nike

我正在创建一个简单的 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)'")

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

最佳答案

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

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

如果您按照我在这里建议的方式进行操作,那么当您创建要滑动的用户卡列表时,您只需使用通配符(Firebase 从技术上讲不支持通配符,但他们的文档解释了一种解决方法this) 作为用户 ID,然后设置在潜在匹配拒绝数组中找不到当前用户 ID 的位置。我已经链接了有关过滤的文档,仅供引用。

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

关于swift - 使用数组过滤 Firebase 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46699173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com