如何在Firebase中使用数据作为密钥?

时间:2017-03-01 08:10:01

标签: javascript firebase firebase-realtime-database

这是我当前的Firebase数据库配置,我想使用username作为键,使用CurrentUser.ID作为值。

我尝试使用字符串插值但是我遇到了一些错误。

function updateExistingUserRoot(username) {
  const { currentUser } = firebase.auth();
  return (dispatch) => {
    firebase.database().ref(`/ExistingUser`).push({
      `${username}`: currentUser.uid
    })
  }
}

我知道firebase每次推送数据时都会生成一个唯一的密钥,但我想保留当前的配置。

更新1

我已更改为使用设置,但错误仍然存​​在。

function updateExistingUserRoot(username) {
  const { currentUser } = firebase.auth();
  firebase.database().ref(`/ExistingUser`).set({
    `${username}`: currentUser.uid
  });
}

错误:预期的属性分配。

3 个答案:

答案 0 :(得分:0)

对于您想要的配置,您应该使用setupdate方法来保存或更新数据。

firebase.database().ref(`/ExistingUser`).set({
      `${username}`: currentUser.uid
})

这样,您的数据将保存在username节点中,该节点将与用户的uid进行映射。

希望有所帮助!

答案 1 :(得分:0)

如果要创建具有特定密钥的用户,则应删除push方法(创建唯一密钥)并使用以下内容:

firebase.database().ref(`/ExistingUser` + userKey).set({
    username: value...
  });

Firebase中的所有内容都是网址。

https://testxxx.firebaseio.com/xxx/ExistingUser

如果您想在此位置创建一个KEY1键作为孩子的用户,您将拥有:

https://testxxx.firebaseio.com/xxx/ExistingUser/KEY1

答案 2 :(得分:0)

两位先生给出的答案是正确的,但我不得不稍微调整一下才能让它发挥作用。

这是代码

firebase.database().ref(`/ExistingUser/${username}`).set({
   userID: currentUser.uid
 }).then(() => console.log('Set existing user done'))
   .catch((error) => console.log(error.message))