我想问一个与firestore查询swift相关的问题。我有如下的firestore结构:
目前我开发了一个搜索系统,用户可以根据min
过滤max
和team
个人。以下是.collection("team")
Firestore.firestore().collection("team")
.whereField("min", isGreaterThanOrEqualTo : filterMin)
.whereField("max", isLessThanOrEqualTo : filterMax)
预期:如果用户放置filterMin
= 0且filterMax
= 600,则会显示team1
和team2
的数据,如果用户放置filterMin
= 3且filterMax
= 500,仅显示team2
的数据。
但问题是如果我使用上面的代码,我得到如下错误
'无效的查询。所有滤波器都有不等式(lessThan, lessThanOrEqual,greaterThan或greaterThanOrEqual)必须在 相同的领域。但是你有“min' min'和' max''
我已经阅读了文档,但似乎对我没什么帮助。我在快速开发和firebase中仍然是新手。谢谢你的帮助。
答案 0 :(得分:2)
Cloud Firestore目前不允许您执行多个不等式过滤器。解决方法可能是运行第一个.whereField查询,然后在获得文档后,过滤数组以进行第二次查询。
Firestore.firestore().collection("team")
.whereField("min", isGreaterThanOrEqualTo : filterMin)
.getDocuments { (snapshot, error) in
if let snapshot = snapshot {
for document in snapshot.documents {
let data = document.data()
//parse your data into an array of teams
}
}
let filteredTeams = teams.filter { $0.max < filterMax }
}
答案 1 :(得分:0)
你不能在多个字段上有一个不等式运算符,你的字段是最小值或最大值。 Firestore仅支持一个inEquality运算符(&lt;,&gt;,&lt; =,&gt; =),然后支持任意数量的eqaulity运算符(==)。
您可以在&#39;复合查询&#39;下阅读更多相关信息。 here