在firebase中保存数据会返回一个数组

时间:2017-12-16 19:11:16

标签: javascript reactjs firebase firebase-realtime-database

我正在开发一个firebase数据库。 在用户执行操作后,我创建了一个新的ref并设置了一些数据:

const ref = firebase.database().ref(`users/${userID}/likes/${ID}`);
ref.set(ID);

我将userID和ID传递给函数,在firebase中创建的值是正确的,但是当我下载数据时,有时我会有一个数组而不是一个对象列表。我不明白我做错了什么。

1 个答案:

答案 0 :(得分:2)

来自你的例子

const ref = firebase.database().ref(`users/${userID}/likes/${ID}`);

ref.set(ID);

无论ID是什么,看起来你都是双嵌套。您的引用将创建一个新的路由后,喜欢其名称是任何ID,然后您在这个新创建的路径(也是一个对象)内设置ID(不管它是什么)。如果您尝试创建对用户喜欢的帖子(或任何内容)的引用,请将客户端打包到数组中,然后将它们设置为users / $ {userID} / likes ..

这是一个例子,我正在使用注册信息,但它是完全相同的过程..

let account = {}
        account.email = email.toLowerCase()
        account.uid = authData.uid
        account.username = username



firebase.database().ref('users/' + authData.uid).set({
            account
        })

在此用户uid中查找引用快照的示例中,您将获得一个帐户对象,如果将其设置为数组,也可以访问该数据。

你可以按照这个例子......

let likedPosts = []
likedPosts.push(new data from user interactions)
firebase.database().ref(users/${userID}/likes).set({
            likedPosts
        })

或者,可能最好的方法(如果你想使用firebase)是遵循这个演示和.push到users / $ {userID} / likes。我不喜欢这种方法,因为它创建了一个具有唯一ID的对象。使用此数据很困难,因为您无法使用基本的javascript辅助函数,如map,filter和reduce。

https://firebase.google.com/docs/database/web/lists-of-data