无法在我的Web应用程序中访问firebase实时数据库

时间:2018-04-20 13:41:51

标签: javascript firebase firebase-realtime-database

我正在开发firebase webapp并遇到一个问题。 我无法访问(读/写)firebase实时数据库。

 <script src="https://www.gstatic.com/firebasejs/4.12.0/firebase.js"></script>
<script>
var config = {
    apiKey: "AIzaSyCPYu_iqHjNoXjMfdMVLoYs5Graf2gdz7I",
    authDomain: "sharing-is-caring-967c8.firebaseapp.com",
    databaseURL: "https://sharing-is-caring-967c8.firebaseio.com",
    projectId: "sharing-is-caring-967c8",
    storageBucket: "sharing-is-caring-967c8.appspot.com",
    messagingSenderId: "884406512169"
  };
firebase.initializeApp(config);

    firebase.auth().signInWithEmailAndPassword("myemail@gmail.com", "Qqqq123").then(function(info) {
        var uid = info.uid;
        firebase.database().ref('users/' + uid + '/userDetails').once('value').then(function(data) {
            alert(data)
        }).catch(function(error) {
            alert(error.message);
        });
    }).catch(function(error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        alert(errorMessage);
        // ...
    });
</script>

SignInWithEmailAndPassword工作正常。 在数据库部分, 一次('值')功能不再响应。 没有成功也没有失败。 没有任何错误信息并且总是沉默

实时数据库规则

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null",
      "threads": {
        "$tid": {
          "messages": {
            ".indexOn": ["read", "date"]
          }
        }
      }
  }
}

Fire base Web Setup Guide Screenshot of my Firebase

数据库结构

{
  "users" : {
    "BzucCBivhiRUogK5GeNrMV6k6M83" : {
      "userDetails" : {
        "displayName" : "Stanislav Sergeev",
        "email" : "stanislav.atos@yahoo.com",
        "notifications" : true,
        "phoneNumber" : "",
        "profile_image" : "",
        "pushToken" : "ec7iJ7Mt7Lg:APA91bFb8NK2XeaLVUgr-DEPRFuLMDCk9_tIr_eHBjmuZPnHDUvFuCsj3kez4F5-Y9CjVXOY6VlsFi5nlazSZys4KBjwCKcpINbV5S2ZEaH09aWZ6sLga8dOja-UIp3Iz3DSOAb4bcH4"
      }
    }
  }
}

2 个答案:

答案 0 :(得分:1)

之前我遇到过同样的问题,这与您的位置有关。 请尝试使用VPN。

答案 1 :(得分:0)

因此,根据评论和您的数据库结构:

首先,我不明白以下规则是什么?

 "threads": {
    "$tid": {
      "messages": {
        ".indexOn": ["read", "date"]
      }
    }
  }

其次,您可以尝试使用基本规则:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

第三,你确定你被放入了吗?如果你做了什么

var uid = info.uid;
console.log(uid);

PS:请注意,您正在使用的方法显然将被弃用,请参阅 https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithEmailAndPassword

编辑:这是有效的,我已经复制了你的案子。请注意returndata.val()

firebase.auth().signInWithEmailAndPassword("azerty@nmw.com", "****")
    .then(function (info) {
        var uid = info.uid;
        console.log(uid);
        return firebase.database().ref('users/' + uid + '/userDetails').once('value');
    })
    .then(function (data) {
        console.log(data.val());
    })
    .catch(function (error) {
        alert(error.message);
    });