无法从Firebase数据库检索OrderbyChild()数据

时间:2019-08-25 12:32:58

标签: javascript firebase firebase-realtime-database dialogflow dialogflow-fulfillment

我的数据库结构如下图所示:

我曾经使用orderByChild()使用RegId作为输入从firebase数据库中检索数据,但是我却得到的值为NULL

请告诉我如何使用RegId作为用户输入来检索数据。

return admin.database().ref('Table/'+RegId).orderByChild('RegId').once("value").then((snapshot) => {
    var name = snapshot.child("FirstName").val();
    agent.add(`The student name is ` + name);
    var email = snapshot.child("EmailId").val();
    agent.add(`The student Mail is ` + email);
    var Regno = snapshot.child("RegId").val();
    agent.add(`The student Register no is ` + Regno);
})

我的输出为:

学生姓名为空

学生邮件为空

学生注册号为空

1 个答案:

答案 0 :(得分:0)

对Firebase数据库执行查询时,可能会有多个结果。因此,快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

这意味着您的代码需要通过在回调中循环snapshot.forEach()来处理此列表:

return admin.database().ref('Table/'+RegId).orderByChild('RegId').once("value").then((snapshot) => {
  snapshot.forEach((user) => {
    var name = user.child("FirstName").val();
    agent.add(`The student name is ` + name);
    var email = user.child("EmailId").val();
    agent.add(`The student Mail is ` + email);
    var Regno = user.child("RegId").val();
    agent.add(`The student Register no is ` + Regno);
  });
})