firebase - 在数组中添加和删除新值

firebase - add and remove new values into an array

我在 firebase 实时数据库中有两个数组,用于管理用户关注者和关注者。我在我的 vue 应用程序中创建了这个功能,如果用户单击另一个用户的个人资料中的按钮,它将添加以下内容,并将以下内容添加到单击的用户的个人资料中:

        async followUser() {
            await update(ref(db, 'Users/'+ this.profileKey), {
                followers: [store.currentUser.uid]
            })
            await update(ref(db, 'Users/'+ store.currentUserKey), {
                following: [this.$route.params.uid]
            })
        }

目前我已经测试了我临时创建的两个配置文件,功能按预期运行,但我对此有疑问。如果用户将开始关注其他用户,新条目将正确添加到现有数组中还是所有数据将被覆盖?将 valuse 推送或删除到存储在 firebase 实时数据库中的数组的正确方法是什么?

在 Firebase 实时数据库 API 中,没有原子方法可以将项目添加到数组或从数组中删除项目。您必须读取整个数组,添加项目,然后写回数组。

更好的方法是将 followersfollowings 存储为 maps 而不是数组,其值为 true(因为您可以在 Firebase 中有一个没有值的键。如果你这样做,添加一个新的用户关注者将是:

set(ref(db, 'Users/'+ this.profileKey+'/followers/'+store.currentUser.uid), true)

删除关注将是:

set(ref(db, 'Users/'+ this.profileKey+'/followers/'+store.currentUser.uid), null)

remote(ref(db, 'Users/'+ this.profileKey+'/followers/'+store.currentUser.uid))

另见:Best Practices: Arrays in Firebase.