【问题标题】:How to properly use Firebase Admin SDK using Node.js for a web-app?如何使用 Node.js 为网络应用正确使用 Firebase Admin SDK?
【发布时间】:2020-08-08 00:55:12
【问题描述】:

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

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

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

我根据Google Developers 初始化了 Node.js 的 Admin SDK 所需的一切

除了 Firebase 为我生成的所有文件之外,我在 WebStorm 中的“公共”目录中创建了两个文件: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 知识为零,学习时间很少。今天是我第一天看到 javascript 和 html。我整天都在为此苦苦挣扎,我很乐意得到一些帮助。

【问题讨论】:

    标签: javascript node.js firebase firebase-realtime-database firebase-admin


    【解决方案1】:

    无法通过网络前端代码使用 Firebase Admin SDK。它仅适用于运行 nodejs 的后端代码(或您的桌面,这显然对您有用)。如果您想直接从前端读取和写入数据,您应该按照documentation 中的说明进行操作。

    【讨论】:

    • 我在android中实现了一个婚礼管理应用,使用firebase。这真的很有趣,应用程序真的很棒。我想实现一个到达确认机制,以便不一定拥有该应用程序的客人可以提交到达,然后提交将写入数据库中的客人记录他到达。我认为这里可以使用 admin sdk。
    • 仅当您想在后端运行代码时。不过,听起来您没有后端。我提供的链接将帮助您开始编写代码以在浏览器中运行。
    • 我红色你的博客使用 android android 架构组件与 firebaserecycleradapter。非常好。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2019-09-07
    • 2020-04-30
    相关资源
    最近更新 更多