如何使用 Node.js 为网络应用程序正确使用 Firebase Admin SDK?
How to properly use Firebase Admin SDK using Node.js for a web-app?
首先,对于描述,我深表歉意。这是我能做的最好的,因为我对 WEB 开发的知识是零,而且我发现很难找到具体的问题。
我完成了一个很棒的 android 应用程序的开发,现在我正在使用 Firebase 托管来托管我的静态网页 - 一个带有提交按钮的简单表单。
我为此苦苦挣扎了一整天,再次为我在这种情况下的愚蠢感到抱歉。所以我们开始吧:
为 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.
中的说明进行操作
首先,对于描述,我深表歉意。这是我能做的最好的,因为我对 WEB 开发的知识是零,而且我发现很难找到具体的问题。
我完成了一个很棒的 android 应用程序的开发,现在我正在使用 Firebase 托管来托管我的静态网页 - 一个带有提交按钮的简单表单。
我为此苦苦挣扎了一整天,再次为我在这种情况下的愚蠢感到抱歉。所以我们开始吧:
为 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.
中的说明进行操作