Javascript 连接到我的Firebase数据库时遇到问题-节点&;快车
总的来说,我还在学习编程,如果我说不通的话,很抱歉 我正在尝试连接到我的firebase数据库,但我收到一个权限被拒绝的错误。我的firebase中的数据库设置为测试模式,因此任何人都可以访问它 我还添加了基于firebase文档所需的所有npm包 如果我需要提供更多信息,请告诉我 我不确定我在这里做错了什么。有人知道吗?感谢您的帮助 这是我的模块文件Javascript 连接到我的Firebase数据库时遇到问题-节点&;快车,javascript,node.js,firebase,express,firebase-realtime-database,Javascript,Node.js,Firebase,Express,Firebase Realtime Database,总的来说,我还在学习编程,如果我说不通的话,很抱歉 我正在尝试连接到我的firebase数据库,但我收到一个权限被拒绝的错误。我的firebase中的数据库设置为测试模式,因此任何人都可以访问它 我还添加了基于firebase文档所需的所有npm包 如果我需要提供更多信息,请告诉我 我不确定我在这里做错了什么。有人知道吗?感谢您的帮助 这是我的模块文件 var express = require('express'); var firebase = require('firebase'); /
var express = require('express');
var firebase = require('firebase');
// Initialize Firebase
var config = {
apiKey: "apikey",
authDomain: "authdomain",
databaseURL: "databaseurl",
storageBucket: "storagebucket"
};
firebase.initializeApp(config);
var db = firebase.database();
var ref = db.ref("/users");
ref.on("value", function(snapshot) {
console.log(snapshot.val());
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
var index = require('./routes/index');
app.use('/', index);
module.exports = app;
这是我的路线/index.js
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'The Title' });
});
module.exports = router;
异步侦听器:存储在Firebase实时数据库中的数据通过将异步侦听器附加到
数据库参考。侦听器在初始设置时触发一次
数据状态,并在数据更改时再次显示。事件
侦听器可能会接收几种不同类型的事件
有用链接
您需要创建一个与数据库路径对应的引用变量
var ref=db.ref(“服务器/保存数据/fireblog/posts”)代码>
然后您将附加一个异步回调来读取引用处的数据
ref.on("value", function(snapshot) {
console.log(snapshot.val());
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
我相信你被拒绝的问题是你正在使用
var db=firebase.database()代码>
而不是
var db=admin.database()代码>所以我找到了一种正确连接firebase数据库的方法。我不确定这是否是最好的方法,但我做的第一件事是删除当前数据库并重新创建它(不确定这是否有帮助或需要,但我只是想重新安装,以防以前出现问题。)
然后在firebase中的数据库仪表板中,我进入仪表板屏幕左上角“Project Overview”标题旁边的“Gear Icon=>Project Settings”。在Firebase Admin SDK下,我点击了底部的“生成新私钥”按钮
这给了我一个.json文件,它被下载到我的计算机上。我将下载的文件名更改为更简单的名称,如myfirstapp-firebase-db.json。我将此文件添加到存储节点js的文件夹中
在开始编写连接到firebase数据库的代码之前,我必须确保我的“database=>Rules”在firebase项目中的读写权限设置为true
数据库规则设置:
{
"rules": {
".read": true,
".write": true
}
}
配置firebase所需的一切都完成后,我只需将module.js文件配置为正确连接。下面是连接到firebase所需的代码。两件重要的事情是“serviceAccount”和“databaseURL”
var firebase=require('firebase');
//初始化firebase
firebase.initializeApp({
serviceAccount:“./-firebase db.json”,
数据库URL:“https://.firebaseio.com/"
});
var db=firebase.database();
var ref=db.ref(“/users”);
。。。。。“serviceAccount”是指向从上述步骤“生成新私钥”下载的.json文件的路由。您可以在firebase内白色块顶部的“数据库”仪表板中找到databaseURL。我只是将该url复制并粘贴到数据库url中
然后我将firebase.database()放入var=db,然后指定ref
在这一点上,我的连接是成功的,当我创建node modules.js时,它在控制台中显示了ref数据库中的所有内容。确保在数据库中有一些预先填充的字段,以便控制台向您显示其中的所有项目。我希望这可能对某人有所帮助,如果有人知道更好的方法,我很想知道你的建议 我想你需要先读一下,谢谢你给我指出了正确的方向。所以我添加了var ref=db.ref(“/users”);然后是ref.on()的以下代码块。当我使用console.log(ref)时,它表示权限被拒绝。你能告诉我从哪里开始,这样我就可以正确地进入我的数据库吗?我也用这些信息编辑了我的文章,但我相信你的权限被拒绝的问题是你正在使用var db=firebase.database()代码>而不是var db=admin.database()代码>
var firebase = require('firebase');
// Initialize firebase
firebase.initializeApp({
serviceAccount: "./<your-service-account-url>-firebase-db.json",
databaseURL: "https://<your-database-url>.firebaseio.com/"
});
var db = firebase.database();
var ref = db.ref("/users");