Firebase Firestore-保存用户书签

时间:2019-03-04 01:13:46

标签: android firebase kotlin google-cloud-firestore

我正在将我的应用程序迁移到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并查看其书签,对吗?

任何建议将不胜感激。

0 个答案:

没有答案