Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我会得到“;未定义”;在我的Firebase应用程序的表中?_Javascript_Html_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 为什么我会得到“;未定义”;在我的Firebase应用程序的表中?

Javascript 为什么我会得到“;未定义”;在我的Firebase应用程序的表中?,javascript,html,firebase,firebase-realtime-database,Javascript,Html,Firebase,Firebase Realtime Database,我正在尝试创建一个从Firebase检索数据并使用JavaScript在表中显示的应用程序。问题是,它在应用程序和控制台中向我显示“未定义”,当我尝试直接从函数打印值时,它们包含一个值,所以有人能帮我吗 这是我的代码: function doSomething() { var something = firebase.database().ref('*****'); //comment selection something.on('value', function gotDat

我正在尝试创建一个从Firebase检索数据并使用JavaScript在表中显示的应用程序。问题是,它在应用程序和控制台中向我显示“未定义”,当我尝试直接从函数打印值时,它们包含一个值,所以有人能帮我吗

这是我的代码:

function doSomething() {
  var something = firebase.database().ref('*****');

  //comment selection 
  something.on('value', function gotData(data) {
    var values = data.val();
    var keys = Object.keys(values);
    var i = 0;
    while (i < keys.length) {
      var k = keys[i];
      var comments = values[k].comment;
      var idU = values[k].id;
      var idS = values[k].idservice;
      var nom = getuser(idU);
      var service = getservice(idS);
      var tr = document.createElement('tr');
      var td = document.createElement('td');
      var td2 = document.createElement('td');
      var td3 = document.createElement('td');
      var t = document.createTextNode(i + ':' + comments);
      var t2 = document.createTextNode(nom);
      var t3 = document.createTextNode(service);

      td.appendChild(t);
      td2.appendChild(t2);
      td3.appendChild(t3);
      tr.appendChild(td);
      tr.appendChild(td2);
      tr.appendChild(td3);
      document.getElementById("commentsection").appendChild(tr);
      i++;
    }
  }, errData);
}

function getuser(IdU) {
  var users = firebase.database().ref('******');
  users.on('value', function getData(data) {
    var values = data.val();
    var keys = Object.keys(values);
    var j = 0;

    while (j < keys.length) {
      var k = keys[j];

      if (k === IdU) {
        var name = values[k].nom;

        console.log(name);

        return name;

        break;
      } else {
        console.log('not found');

        break;
      }
      j++;
    }
  }, errData);
}

function getservice(IdS) {
  var service = firebase.database().ref('******');
  service.on('value', function getData(data) {
    var values = data.val();
    var keys = Object.keys(values);
    var s = 0;

    while (s < keys.length) {
      var k = keys[s];

      if (k === IdS) {
        var nomservice = values[k].nomservice

        console.log(nomservice);

        return nomservice;

        break;
      } else {
        return false;
      }
      s++;
    }
  }, errData);
}

function errData(err) {
  console.log('error!');
  console.log(err);
}
函数doSomething(){
var something=firebase.database().ref('*****');
//评论选择
关于('value',函数gotData(data){
var values=data.val();
var keys=Object.keys(值);
var i=0;
while(i
这是我得到的屏幕截图:


getservice
中,
while
循环最多运行一次,
s++
将永远无法到达,因为这两种可能的条件都是
return
ing。非常感谢您快速回答,但您能解释更多吗?我没有理解您的意思。
return
会导致函数退出。那么在哪种情况下会到达
s++
?哦,我明白了,我将“return”位置更改为函数的末尾,但这次我得到了这个错误“uncaughtreferenceerror:nomservice未定义”