我正在开发一个firebase数据库。 在用户执行操作后,我创建了一个新的ref并设置了一些数据:
const ref = firebase.database().ref(`users/${userID}/likes/${ID}`);
ref.set(ID);
我将userID和ID传递给函数,在firebase中创建的值是正确的,但是当我下载数据时,有时我会有一个数组而不是一个对象列表。我不明白我做错了什么。
答案 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。