Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 连接到我的Firebase数据库时遇到问题-节点&;快车_Javascript_Node.js_Firebase_Express_Firebase Realtime Database - Fatal编程技术网

Javascript 连接到我的Firebase数据库时遇到问题-节点&;快车

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'); /

总的来说,我还在学习编程,如果我说不通的话,很抱歉

我正在尝试连接到我的firebase数据库,但我收到一个权限被拒绝的错误。我的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;
异步侦听器:存储在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");