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

Javascript 在firebase中保存数据会返回一个数组,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,我正在处理firebase数据库。 用户操作后,我创建一个新的ref并设置一些数据: const ref = firebase.database().ref(`users/${userID}/likes/${ID}`); ref.set(ID); 我将userID和ID传递给函数,在firebase中正确创建值,但当我下载数据时,有时会使用数组而不是对象列表。我不明白我做错了什么。从你的例子 const ref = firebase.database().ref(`users/${userID

我正在处理firebase数据库。 用户操作后,我创建一个新的ref并设置一些数据:

const ref = firebase.database().ref(`users/${userID}/likes/${ID}`);
ref.set(ID);
我将userID和ID传递给函数,在firebase中正确创建值,但当我下载数据时,有时会使用数组而不是对象列表。我不明白我做错了什么。

从你的例子

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

看起来您正在双重嵌套任何ID。您的引用将在likes之后创建一个新路由,其名称为任意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上查找ref快照时,您将获得一个帐户对象,如果将其设置为数组,您也可以在其中访问数据

你可以按照这个例子

let likedPosts = []
likedPosts.push(new data from user interactions)
firebase.database().ref(users/${userID}/likes).set({
            likedPosts
        })
或者,最好的方法(如果您想使用firebase)是遵循此演示并.push-to-users/${userID}/likes。我不喜欢这个方法,因为它创建了一个由具有唯一ID的对象组成的对象。处理这些数据很困难,因为您不能使用基本的javascript帮助函数,如map、filter和reduce