如何在 Firebase 实时数据库中检索数据?

How to retrieve data in Firebase realtime database?

我已经通过创建向导在 Firebase(不是 Firestore)中创建了一个新应用。我什至通过网络 UI 在我的数据库中输入了一些虚拟数据。我如何从 fireabase-admin SDK 检索此数据?

我已经像这样初始化了我的应用程序:

import admin from "firebase-admin";

var serviceAccount = require("../private-key.json");

const app = admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://<my-db-url>.firebaseio.com/'
});

const db = app.database()

db 似乎没有任何获取或设置方法。我错过了什么?

跟在https://firebase.google.com/docs/database/admin/retrieve-data后面,不清楚db.ref是什么。我需要这个吗?

如何从我的数据库中检索数据?

db.ref 表示数据库中的特定位置,可用于读取数据或将数据写入该数据库位置。

您应该检查 firebase.database.Reference 您可以使用的属性和方法。

这是从 Firebase 实时数据库读取数据的示例代码段:

var admin = require("firebase-admin");
 
// Initialize the app with a service account, granting admin privileges
admin.initializeApp({
  databaseURL: "your-database-url"
});
// admin.database.enableLogging(true);
// As an admin, the app has access to read and write all data, regardless of Security Rules
var db = admin.database();
var ref = db.ref("Users");
var getPromise = ref.once("value", function(snapshot) {
  console.log(snapshot.val());
});
 
return Promise.all([getPromise])
  .then(function() {
    console.log("Transaction promises completed! Exiting...");
    process.exit(0);
  })
  .catch(function(error) {
    console.log("Transactions failed:", error);
    process.exit(1);
  });

在上面的代码片段中,我们使用 snapshot.val()DataSnapshot 中提取一个值。 val() 方法可以 return 标量类型(字符串、数字或布尔值)、数组或对象。它也可能 return null,表示 DataSnapshot 为空(不包含任何数据)。

您还应该检查 DataSnapshot 以了解您可以使用的可用属性和方法。

我们还使用了 Promise.all() 方法,该方法将可迭代的承诺作为输入,并且 return 是一个解析为输入承诺结果数组的单一承诺。此 returned 承诺将在所有输入的承诺都已解决时解决,或者如果输入可迭代不包含任何承诺,则在发生任何错误时捕获。