如何获取写入Firebase的数据的密钥/ ID?

时间:2017-01-23 05:40:28

标签: javascript firebase firebase-realtime-database

我有一个存储员工记录的应用程序,它存储员工ID,但也需要每个员工都有本地ID,我想使用{{1}将数据推送到数据库时使用Firebase生成的ID } function作为每个员工的内部ID。这是变更管理所必需的。

我的代码:

push()

输出上述代码:

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);

    } 

使用Key代替名称,因为名称已被弃用但未获得密钥,而是返回一个函数。

带密钥的代码代替名称

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

更改后的输出:

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

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

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

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

也试过

"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);

1 个答案:

答案 0 :(得分:3)

您使用的是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