如何添加使用带有指定键的push()而不是firebase上的默认键

时间:2018-03-25 15:42:36

标签: javascript firebase firebase-realtime-database

Realtime Database Screenshot on Firebase

所以我尝试使用Firebase将用户信息存储在数据库中,其中包括他们的电子邮件,ID和关联组。

每次新用户创建帐户时,他们的数据都会保存在父节点Managers

到目前为止,这是我的代码,

var manRef = firebase.database().ref('Managers');

function saveManage(sEmail, uid, society){

manRef.push({ ManagerID : uid, Email : sEmail, Society : society }) }

对于函数saveManage中的变量是从表单上的条目收集的,我希望能够将新条目推送到节点Managers,但是将图像中突出显示的键设置为预定义的值,例如uid,以便我以后更容易引用各个条目

2 个答案:

答案 0 :(得分:3)

听起来你只想在预定义的位置设置()而不是使用push(),而push()总是使用自己的算法来生成密钥。

manRef.child(uid).set({
        ManagerID : uid,
        Email : sEmail,
        Society : society
    })
}

答案 1 :(得分:0)

我会做类似下面的事情来使这个功能健壮。注意,我喜欢.toLowerCase()属性,然后再存储它们。这样,即使您只想更新他们的电子邮件并将其余部分单独保留,您现在也可以调用此功能。

var managersRef =  firebase.database().ref('managers');

function saveManager(email, uid, society){
    var obj = {};
    if (uid !== undefined){
      if (email !== undefined){
        obj["email"][email.toLowerCase()];
      }
      if (society !== undefined){
        obj["society"][society.toLowerCase()];
      }
      managersref.child(uid).update(obj);
    } else {
      console.log("uid required") //or throw an error
    }
}