Firebase数据库无响应

时间:2019-09-09 15:14:38

标签: javascript html firebase firebase-realtime-database

我不知道为什么,但是我的代码无法正常工作。 我想在我的网页中使用Firebase实时数据库,但是一旦我添加了Firebase的内容,执行我的代码就什么都不用了。 Chrome在我的代码中没有发现任何错误。 您能告诉我,为什么它不起作用。我做错什么了吗?

非常感谢你, 尼康

PS:我将代码中的API密钥替换为“ |”因此您看不到我的API密钥:)

我在Chrome和W3Schools的Tryit Editor中执行了代码。另外,我尝试了很多次更改代码,但是没有办法使我达到目标。

<script src="https://www.gstatic.com/firebasejs/6.6.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/6.6.0/firebase-database.js">
  var config = {
    apiKey: "|||||||||||||||||||||||||||||||||||||",
    authDomain: "littleappsdatabase.firebaseapp.com",
    databaseURL: "https://littleappsdatabase.firebaseio.com",
    storageBucket: "littleappsdatabase.appspot.com"
  };
  firebase.initializeApp(config);
  var database = firebase.database();
  function getTermine () {
    firebase.database()
      .ref('/users/' + userId)
      .once('value')
      .then(function(snapshot) { 
        var termine = (snapshot.val() && snapshot.val().calendar) || 'Keine Termine vorhanden';
      });

    return (termine);
  }
  var list = getTermine();
  document.write('<h4>', list.replace(';', '<br><br>'), '</h4>');
</script>

我认为它会延迟显示给定标签的值。

1 个答案:

答案 0 :(得分:1)

我已编辑您的问题,以正确设置代码格式。现在您可以清楚地看到,您正在外部函数termine中返回一个未定义的getTermine()变量。显然,这将不包含您想要的结果。

此外,我怀疑您正在运行的代码是异步的,因此您无法以同步方式返回该值。但是,您可以创建一个回调函数,一旦该值可用,该函数就会被调用。像这样:

function getTermine(callback) {
  firebase.database()
    .ref('/users/' + userId)
    .once('value')
    .then(function(snapshot) { 
      var termine = (snapshot.val() && snapshot.val().calendar) || 'Keine Termine vorhanden';
      callback(termine);
    });
}

getTermine(function(list) {
  document.write('<h4>', list.replace(';', '<br><br>'), '</h4>');
);

希望有帮助。在工作时请注意代码的布局,因为正确缩进代码很容易发现这些错误。