如何获取firebase web中的推送ID值

时间:2018-01-27 12:21:53

标签: javascript firebase web firebase-realtime-database

Firebase DB screenshot

我想获得AllocEmp中push id的值(111122223333)。 firebase DB:

{
  "AllocEmp" : {
    "-L3c47chqb35p0Ndo_XB" : "111122223333"
  },
  "complaintDate" : "Wed Jan 10 18:40:34 GMT+05:30 2018",
  "complaintDesc" : "ggshwhwuuww\ngshhsjsn",
  "complaintLM" : "annA",
  "complaintLoc" : "ist",
  "complaintName" : "Continous Fluctuations",
  "defaultTime" : "Thu Jan 11 00:40:34 GMT+05:30 2018",
  "department" : "Electricity",
  "resolvingTime" : "6",
  "uid" : "123456788765"
}

我正在使用代码:

    var fb = 
    firebase.database().ref().child('UserComplaints').child('AllocEmp');
    fb.once('value', snap => {
        alert(snap.val);
    });

此代码返回null。 请帮帮我

3 个答案:

答案 0 :(得分:1)

你没有调用val()方法,你错过了括号

你应该做的是

var fb = firebase.database().ref().child('UserComplaints/AllocEmp/1515589858255');
fb.once('value', snap => {
    alert(snap.val()); //here is the problem
});

答案 1 :(得分:1)

我遇到了类似的问题。这里发生的是回调稍后运行,因此控制台只告诉它是一个对象。所以你可以使用wait()并设置Timeout。但显然这是一种错误的做法。在代码中启用函数调用以使其同步。 希望它有所帮助。

答案 2 :(得分:0)

在您的代码中,您使用的是snap.val。因为val是一个函数而不是表达式。使用snap.val()。还记得它返回一个对象,所以尝试控制它不是警报,或者你可以将对象字符串化为警告。就像这样: -

let values = []
var fb = 
firebase.database().ref().child('UserComplaints').child('AllocEmp');
fb.once('value', snap => {
    console.log(snap.val()); // to console object
    Object.keys(snap.val()).map(k => {
        console.log(snap.val()[k])
        values.push(snap.val()[k])
    })
    alert(JSON.stringify(snap.val())) // to alert object
});
console.log(values)