我有一个存储员工记录的应用程序,它存储员工ID,但是还需要每个员工都有一个本地ID,当我们使用push()函数作为内部数据将数据推送到数据库时,我想使用Firebase生成的ID每位员工的ID。这是变更管理所必需的。

我的代码:

function submit()
    {


    var dsRef=new Firebase("https://dataretrievaltest-28983.firebaseio.com/EmployeeDB/EInfo");

    var name=document.getElementById('Name').value;
    var eid=document.getElementById('EID').value;
    var email=document.getElementById('Email').value;

    dsRef
                    .push(
                            {
                            Name:name,
                            EID: eid,
                            Email: email,
                            }
                        );

    var pushid=dsRef.name;
    console.log("name:"+pushid);
    console.log(name);
    console.log(eid);
    console.log(email);

    }


上面代码的输出:

name:function (){S("Firebase.name() being deprecated. Please use Firebase.key() instead.");D("Firebase.name",0,0,arguments.length);return this.key()}
savekey.html:104 Djoko
savekey.html:105 0143
savekey.html:106 Djoko@dept.com


因为不推荐使用名称名称,而是使用了Key来代替名称,但是没有获得密钥,而是返回了一个函数。

用代码代替名称的代码

var pushid=dsRef.key;
console.log("name:"+pushid);


更改后的输出:

name:function (){D("Firebase.key",0,0,arguments.length);return this.path.e()?null:me(this.path)}
savekey.html:104 Caroline
savekey.html:105 0192
savekey.html:106 caroline@dept.com


我需要Keys即-Kb5 ...:在下面的Json中可以看到

"EInfo" : {
      "-Kb5UunYfq-8zd_Jc2Nd" : {
        "EID" : "0134",
        "Email" : "Parker@dept.com",
        "Name" : "Parker"
      },
      "-Kb5V9xHhzVix6BNRM78" : {
        "EID" : "1024",
        "Email" : "sanchez@dept.com",
        "Name" : "sanchez"
      }
}


可用的属性(键/名称)未提供所需的输出。如果让我遗失任何东西,请让我知道如何找回钥匙。

也试过了

var pushid=dsRef.child("EInfo").push().key;
console.log("name:"+pushid);


它没有给出期望的结果。

name:function (){D("Firebase.key",0,0,arguments.length);return this.path.e()?null:me(this.path)}
savekey.html:104 camila
savekey.html:105 0172
savekey.html:106 camila@dept.com

最佳答案

您使用的是Firebase SDK 2.x版,但使用的是3.x版的语法。对于Firebase 2.x,获取密钥的语法为:

var pushid=dsRef.key();
console.log("name:"+pushid);


如果您现在正在创建此应用程序,则应该使用Firebase 3.x SDK,在这种情况下,语法的确会是dsRef.key(不带括号)。

更新资料

您似乎正在寻找刚用push()创建的项目的键。您可以通过将push的结果分配给变量来实现:

var newRef = dsRef.push({
    Name:name,
    EID: eid,
    Email: email,
});
console.log(newRef.key()); // or newRef.key when using SDK version 3.x

关于javascript - 如何获取写入Firebase的数据的 key /ID?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41799884/

10-16 20:54
查看更多