javascript - 使用 Express 从 Firebase 数据库获取数据

标签 javascript node.js firebase express firebase-realtime-database

我想从 Firebase 数据库中检索数据。

我已经像这样初始化了我的 server.js:

var http = require("http");

var firebase = require("firebase");
var express = require("express");
var app = express();
var routerProj = require("./routes/routes");
var bodyParser = require("body-parser");
var port = 8080; // set our port
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var server = app.listen(port);

app.use(bodyParser.json());
var config = {
  apiKey: "XXXXXXXXXXXXXXXX",
  authDomain: "datatable-18f93.firebaseapp.com",
  databaseURL: "https://datatable-18f93.firebaseio.com",
  projectId: "datatable-18f93",
  storageBucket: "datatable-18f93.appspot.com",
  messagingSenderId: "282475200118"
};
const db = firebase.initializeApp(config);
app.use("/v1", routerProj);

console.log("Server running at http://127.0.0.1:8000/");
module.exports.db = db.database(); //this doesnt have to be database only

然后在我的 router.js 中定义我的 get 路由如下:

var express = require("express"); // call express
var router = express.Router(); // get an instance of the express Router
var admin = require('firebase-admin');

router
  .route("/")
  .get(function (req, res, err) {

    // Get a database reference to our posts
    var db = admin.database();
    var ref = db.ref("/restau");

    // Attach an asynchronous callback to read the data at our posts reference
    ref.on("value", function (snapshot) {
      console.log(snapshot.val());
    }, function (errorObject) {
      console.log("The read failed: " + errorObject.code);
    });
  });
module.exports = router;

在 Postman 中获取这个地址的请求:http://localhost:8080/v1 我得到这个错误:

Error: The default Firebase app does not exist. Make sure you call initializeApp() before using any of the Firebase services.

但我已经在 server.js 中初始化了数据库连接,所以为什么会出现此错误?

最佳答案

我相信你只需要Firebase Admin SDK进行初始化,引用

https://firebase.google.com/docs/admin/setup#add_firebase_to_your_app

过程是这样的:

var admin = require('firebase-admin');

var serviceAccount = require('path/to/serviceAccountKey.json'); // Or your config object as above.

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount), // Or credential
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});

关于javascript - 使用 Express 从 Firebase 数据库获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48596939/

相关文章:

javascript - 调用 Javascript 函数处理表单后,HTML 表单未打印到浏览器

node.js - Socket.io 与 AJAX 用例

javascript - 如何确保带有promise的函数继续执行

android - Firestore : Totally disable cache for read and write

android - Google Play 游戏、Firebase 和新的 Google 登录

javascript - 通过 "onchildchanged"和 "onchildadded"从 firebase 数据库获取嵌套数据会返回无法识别的内容

javascript - 将变量的值分配给另一个变量使其成为镜像

node.js - Express/Node 响应 header 列表?

node.js - MongoDB,使用Mongoose重复键错误索引?

javascript - 按第一个空格分割字符串