如何使用 Node.js 为网络应用程序正确使用 Firebase Admin SDK?

How to properly use Firebase Admin SDK using Node.js for a web-app?

首先,对于描述,我深表歉意。这是我能做的最好的,因为我对 WEB 开发的知识是零,而且我发现很难找到具体的问题。

我完成了一个很棒的 android 应用程序的开发,现在我正在使用 Firebase 托管来托管我的静态网页 - 一个带有提交按钮的简单表单。

我为此苦苦挣扎了一整天,再次为我在这种情况下的愚蠢感到抱歉。所以我们开始吧:

我根据 Google Developers

为 Node.js 初始化了 Admin SDK 所需的一切

除了 Firebase 为我生成的所有文件外,在 WebStorm 中,我在“public”目录中创建了两个文件:index.js 和 index.html.

我设法以管理员身份使用以下代码写入数据库:

// index.js  

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

const serviceAccount = require("C:/myapp/serviceAccountKey.json");

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://myapp.firebaseio.com"
});

let db = admin.database();
let ref = db.ref("Guests");
let isInvited = false;

function updateDB() {
    ref2.once("value", function (snapshot) {
        isInvited = snapshot.val();

        if (!isInvited) {
            ref.update({
                "invited": true,
                "arrive": true,
            });
        }
    });

}

如果我从 WebStorm 运行 数据库将更改为我设置的值。 这是样板。我希望当用户单击 html 文件中的提交按钮时,将从 js 文件更新数据库。

这是 html 文件的代码:

// index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Welcome to Firebase Hosting</title>
   
  </head>
  <body>
   
    <form id="mainForm">
      <div>
        <label for="arrivalCheckbox">Arrival Confirmation</label>
        <input type="checkbox" id="arrivalCheckbox" value="1">
      </div>
      <div>
        <label for="joiners">Joiners</label>
        <input type="number" id="joiners" min="0" max="20">
      </div>
      <button type="submit" id="submitButton">Submit</button>
    </form>

    
     <!-- update the version number as needed -->
     <script defer src="/__/firebase/7.17.2/firebase-app.js"></script>
     <!-- include only the Firebase features as you need -->
     <script defer src="/__/firebase/7.17.2/firebase-auth.js"></script>
     <script defer src="/__/firebase/7.17.2/firebase-database.js"></script>
     <script defer src="/__/firebase/7.17.2/firebase-messaging.js"></script>
     <script defer src="/__/firebase/7.17.2/firebase-storage.js"></script>
     <!-- initialize the SDK after all desired features are loaded -->
     <script defer src="/__/firebase/init.js"></script>
     
     <script defer src="index.js"></script>

  </body>
</html>

当我尝试将写入数据库的部分放在 index.js 函数中,然后在表单上使用“onSubmit”或“onClick”时从 html 文件调用提交按钮,写入没有发生,即使我使用“firebase deploy”部署我的应用程序也是如此。

我对 WEB 知识为零,几乎没有时间 learn.Today 这是我第一天看到 javascript 和 html。我为此苦苦挣扎了一整天,我很乐意得到一些帮助。

无法从 Web 前端代码使用 Firebase Admin SDK。它仅适用于后端代码 运行 nodejs(或您的桌面,这显然对您有用)。如果您想直接从前端读取和写入数据,则应按照 documentation.

中的说明进行操作