无法从Firebase读取数据

时间:2020-05-15 03:39:27

标签: javascript firebase firebase-realtime-database

这是我的Firebase数据库的结构。 Database Image

最近,如图所示,我将Firebase中每个坦克内的名称从lev更改为level。现在ref.on无法使用数据库。我在console.log("passed");内添加了ref,即使没有打印出来。调用了函数setvalues,但函数内部的ref不起作用。这是什么问题?

<head>      
   <script src="https://www.gstatic.com/firebasejs/4.8.1/firebase.js"></script>
</head>
<body >
<script type="text/javascript">
      var firebaseConfig = {
      apiKey: "xx",
      authDomain: "xxx.firebaseapp.com",
      databaseURL: "https://xxx.firebaseio.com",
      projectId: "xxx",
      storageBucket: "xxx.appspot.com",
      messagingSenderId: "xxxx",
      appId: "xxx:xxx:web:xxx",
      measurementId: "xxx"
      };

     firebase.initializeApp(firebaseConfig);
      var ref1 = firebase.database().ref('tank01/');
      var tank1;

    function setvalues(callback){

      ref1.on("value", function(snapshot) {
      console.log("Passed");
      tank1 = snapshot.val()['level'];
      callback();
       }); 

    }

    setvalues(function(data){
        console.log("set");
    });
  </script>

2 个答案:

答案 0 :(得分:0)

我认为您的实时数据库规则仅限于授权用户执行读取和写入操作。再次检查数据库规则。如果您遇到同样的问题,请将规则更改为公共访问权限。

应该是这样

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

希望这对您有所帮助:)

答案 1 :(得分:0)

检查一下,我做了些改动。

这将起作用,因为我改为公开使用,以便所有应用都可以与实时数据库进行交互。

{
  "rules": {
    ".read": true,
    ".write":true,
    "users": {
      ".read": true,
      "$uid": {
        ".write": "auth.uid === $uid"
      }
    }
  }
}