我正在关注此视频here。
这是我的代码。
的index.html
<!DOCTYPE html>
<html>
<head>
<title>Fire Test</title>
<script src="https://www.gstatic.com/firebasejs/3.2.1/firebase.js"></script>
</head>
<body>
<!-- Value -->
<pre id="object"></pre>
<script src="app.js"></script>
</body>
</html>
app.js
(function () {
// Initialize Firebase
var config = {
apiKey: "AIzaSyCOJZqfas4gxwEYBbRNyyIy7Z9vEsTx4ME",
authDomain: "fire-test-e2185.firebaseapp.com",
databaseURL: "https://fire-test-e2185.firebaseio.com",
storageBucket: "fire-test-e2185.appspot.com",
};
firebase.initializeApp(config);
var preObject = document.getElementById('object');
// Create reference
var dbRefObject = firebase.database().ref().child('object')
console.log('test log'); // logging
// Sync object changes
dbRefObject.on('value', function (snap) {
console.log(snap.val()); // not logging
});
console.log('test log'); // logging
})();
输出
顺便说一句
这是我测试项目的结构,以防万一。
fire-test
|_ index.html
|_ app.js
我在apache
/var/www/html/fire-test
上运行它
http://localhost/fire-test/
答案 0 :(得分:6)
实际上firebase的数据库有它的身份验证,我发现我的数据库上的规则没有正确设置(公开)。
我改变了这个:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
到
{
"rules": {
".read": true,
".write": true
}
}
"auth != null"
至true
注意强>
以这种方式设置规则是一个坏主意。我们不希望任何人访问root
节点。虽然在这个答案中,这只是为了测试firebase连接。
答案 1 :(得分:0)
如果您尝试获取包含存储在firebase
数据库中该位置的当前值的返回对象,请将.on
更改为.once
。
使用.on
表示您希望每次争议事件发生时动态发生某些事情,但.once
表示您只是该位置的当前数据。