Android Firebase Firestore如何列出授权文档?
我正在尝试创建一个文档列表。假设我有这种结构:Android Firebase Firestore如何列出授权文档?,android,firebase,kotlin,firebase-security,google-cloud-firestore,Android,Firebase,Kotlin,Firebase Security,Google Cloud Firestore,我正在尝试创建一个文档列表。假设我有这种结构: cards cardId1 authorizedUser = someuserid1 cardId1b authorizedUser = someuserid1 cardId2 authorizedUser = someuserid2 我想列出“someuserid1”的前两个文档,以及“someuserid2”的最后一个文档。最好的方法是什么?我尝试使用安全规则,但不起作用: service cloud.fir
cards
cardId1
authorizedUser = someuserid1
cardId1b
authorizedUser = someuserid1
cardId2
authorizedUser = someuserid2
我想列出“someuserid1”的前两个文档,以及“someuserid2”的最后一个文档。最好的方法是什么?我尝试使用安全规则,但不起作用:
service cloud.firestore {
match /databases/{database}/documents {
match /cards/{cardid} {
allow read, write: if resource.data.authorizedUser == request.auth.uid;
}
}
}
这是我的Kotlin代码:
val query = FirebaseFirestore.getInstance()
.collection("cards")
.limit(50)
val options = FirestoreRecyclerOptions.Builder<Card>()
.setQuery(query,Card::class.java)
.build()
adapter = CardFireAdapter(options)
val query=FirebaseFirestore.getInstance()
.收款(“卡”)
.限额(50)
val options=FirestoreRecyclerOptions.Builder()
.setQuery(查询,卡片::class.java)
.build()
适配器=CardFireAdapter(选件)
知道我在这里遗漏了什么吗?安全规则定义了允许的查询类型 仍然必须在查询中执行实际筛选:
val query = FirebaseFirestore.getInstance()
.collection("cards")
.whereField("authorizedUser", isEqualTo: "someuserid1")
.limit(50)
谢谢,它起作用了。我使用了.whereEqualTo()方法,因为现在没有.where()方法了。这在我看来确实是个错误,不同平台的语法略有不同。我更新了答案。这仍然意味着获得id令牌的用户可以通过REST api列出所有卡,即使他们没有实际访问任何卡。不,没有。安全规则确保您只能查询授权访问的数据。由于安全规则在服务器上强制执行,并且只能由Firebase项目的管理员修改,因此这是一个非常可靠的安全方案。