我正在将我的应用程序迁移到Firebase Firestore,并且遇到有关如何实现书签的问题。每个用户都可以在我的应用程序中添加书签/收藏夹中的任意数量的事件,而我希望能够存储和检索这些事件。
对于添加书签,我试图获取用户ID(使用Firebase Anonymous登录),并创建一个包含true
的文档。
fun bookmark(event: Event) {
val userId = "my-user-id"
val document = firestore
.collection(USERS)
.document(userId)
.collection(BOOKMARKS)
.document(event.id)
if (event.isBookmarked) {
document.set(event.id to true)
} else {
document.delete()
}
}
我认为这几乎是正确的,因为它在users/my-user-id/bookmarks/my_event_id
创建了一个文档,但这是一对。
first: "my_event_id"
second: true
关于检索书签,我不太确定该怎么做。我认为我应该进行多次访存并进行设置,但是我想知道是否有更好的方法可以做到这一点。
fun getEvents(): LiveData<List<FirebaseEvent>>{
firestore
.collection(EVENTS)
.addSnapshotListener { snapshot, exception ->
if (exception == null) {
val events = snapshot?.toObjects(FirebaseEvent::class.java)
// TODO fetch the bookmarks and set those here
mutableLiveData.postValue(events)
}
}
return mutableLiveData
}
这也安全吗?其他用户将只能猜测其他用户ID并查看其书签,对吗?
任何建议将不胜感激。