我一直使用push()方法将所有用户存储在我的Firebase数据库中。此方法为每个用户生成一个唯一的ID,并将其存储在该ID下。我正在尝试更改此设置,以使我的用户存储在使用set()方法时也会自动生成的user.uid下,但是,我在将其存储在此用户uid下时遇到了麻烦。

我正在使用以下内容将用户添加到数据库中,我在这里缺少什么?

firebase.database().ref().child('accounts').set({
                email: user.email,
                userId: firebase.auth().currentUser.uid

              })


它使用set()并存储如下数据:

{
  "accounts" : {
      "email" : "",
      "userId" : ""
    },
{
      "email" : "",
      "userId" : ""
    }
}


使用push()的结构如下所示:
根据Firebase生成的推送ID存储用户。

{
  "accounts" : {
    "-KRPSyO4B48IpBnHBTYg" : {
      "email" : "",
      "userId" : ""
    },
    "-KR4f4s5yvdr67g687nrth" : {
      "email" : "",
      "userId" : ""
    }
  }


我正在寻找的是这种结构:
用户由firebase生成的userId存储。

{
      "accounts" : {
        "userId value" : {
          "email" : "",
          "userId" : ""
        },
        "userId value" : {
          "email" : "",
          "userId" : ""
        }
      }


任何帮助将不胜感激!!

最佳答案

您尚未在路径中为uid本身创建节点。更改为:

var uid = firebase.auth().currentUser.uid;
firebase.database().ref().child('accounts').child(uid).set({
  email: user.email,
  userId: uid
})

09-10 11:01
查看更多