我仍在学习编程,如果我没有意义,那就很抱歉。
我正在尝试连接到我的firebase数据库,但是我收到了PERMISSION_DENIED错误。我的firebase中的数据库设置为测试模式,因此任何人都应该能够访问它。
我已根据firebase文档添加了所需的所有npm包。
如果我需要提供更多信息,请与我们联系。
我不确定我在这里做错了什么。有人知道吗?任何帮助表示赞赏。
这是我的模块文件
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;
答案 0 :(得分:2)
异步侦听器:通过将异步侦听器附加到a来检索存储在Firebase实时数据库中的数据 数据库参考。首次触发侦听器初始化 数据的状态以及数据随时变化的情况。一个事件 听众可能会收到几种不同类型的事件。
有用的链接https://firebase.google.com/docs/database/admin/retrieve-data
您需要创建与数据库路径
对应的引用变量 var ref = db.ref("server/saving-data/fireblog/posts");
然后你将附加一个异步回调来读取引用
的数据 ref.on("value", function(snapshot) {
console.log(snapshot.val());
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
我相信您与PERMISSION_DENIED的问题在于您正在使用
var db = firebase.database();
而不是
var db = admin.database();
答案 1 :(得分:1)
所以我想出了一种正确连接到我的firebase数据库的方法。我不确定这是否是最好的方法,但我做的第一件事就是删除当前数据库并重新创建它(不确定这是否有帮助或者是否需要但我只是想要一个全新的安装,以防万一之前出错了。)
然后在firebase的数据库仪表板里面,我去了" Gear Icon =>项目设置"在"项目概述"旁边仪表板屏幕左上角的标题。在Firebase Admin SDK下,我点击了"生成新的私钥"底部的按钮。
这给了我一个.json文件,它被下载到我的电脑上。我将下载的文件名更改为更简单的名称,如myfirstapp-firebase-db.json。我将此文件添加到存储节点js的文件夹中。
在我开始编写连接到我的firebase数据库的代码之前,我必须确保我的"数据库=>规则"为读取而设置为真在我的firebase项目中写入权限。
数据库规则设置:
{
"rules": {
".read": true,
".write": true
}
}
在完成配置firebase所需的一切后,我只是将我的module.js文件配置为正确连接。下面是连接到firebase所需的代码。两个重要的事情是" serviceAccount"和" databaseURL" .....
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");
.....&#34; serviceAccount&#34;是从步骤&#34;生成新私钥&#34;下载的.json文件的路径。以上。您可以在&#34;数据库&#34;中找到databaseURL。仪表板位于firebase内的白色块顶部。我只是将该url复制并粘贴到databaseURL中。
然后我将firebase.database()放入var = db,然后指定ref。
此时我的连接成功了,当我做了一个节点modules.js时,它在控制台中向我显示了ref数据库中的所有内容。确保数据库中有一些预先填充的字段,以便控制台显示其中的所有项目。我希望这可能对某人有所帮助,如果有人知道更好的方法,我很想知道你的建议!