0%

Node.js - Express 整合 Firebase 服務

node

前面介紹了 Firebase 的操作與資料存取以及透過 Express 框架讓 Node.js 使用上更友善後,終於要來把兩者結合準備設計屬於自己的 RESTful API 了!

Express 串接 Firebase 起手式

首先先輸入以下程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const express = require("express");
const app = express();

// 表單套件
const bodyParser = require("body-parser");

Sapp.use(express.static("public"));

//# region 表單套件
app.use(bodyParser.json()); //把表單資料轉為 json
app.use(bodyParser.urlencoded({ extended: false })); //
//#endregion

app.get("/", (req, res) => {
res.render("index");
});

const port = process.env.port || 3000;
app.listen(port);

進入 Firebase 取得 SDK 設定

再來進到 Firebase 頁面左側工具列,有一個專案總覽選項,點擊旁邊的齒輪圖示,選取專案設定,最後在上方標籤列處選取服務帳戶

專案總攬 > 專案設定 > 服務帳戶

專案設定

服務帳戶

此時會出現一個視窗會有四個選項,選擇 Node.js 項目,並且複製 Admin SDK 提供的程式碼,將其複製並貼上在本機的 app.js 中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const express = require("express");
const app = express();

// 表單套件
const bodyParser = require("body-parser");

//#region firebase sdk
var admin = require("firebase-admin");
var serviceAccount = require("path/to/serviceAccountKey.json"); //更換成金鑰的檔名
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://nodejsproject-d099d-default-rtdb.firebaseio.com",
});
//#endregion

app.use(express.static("public"));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.get("/", (req, res) => {
res.render("index");
});

const port = process.env.port || 3000;
app.listen(port);

下載金鑰

複製完程式碼後,在視窗最下方有一個藍色按鈕【產生新的私密金鑰】(如下圖)

firebase

new key

,其金鑰就是保護資料不會被自己以外的來讀取此資料庫資料,點選後會下載到專案的根目錄下(或是想要指定存放的資料夾也可以),將檔名複製後,取代變數 serviceAccount 裡面的連結(如上方程式碼註解處)。

確認 Express 整合 firebase 服務

既然有引入套件,當然就要來安裝這些新增的程式,這邊有引入body-parserfirebase-admin,故輸入:

1
npm install -D body-parser firebase-admin

安裝完後在剛剛複製的程式碼的下方打上以下程式碼:

javascript

1
2
let fireData = admin.database();
console.log(fireData);

然後終端機啟動 node app.js,如果看到下方資訊:

terminal

firebase service

以上就可以取得 firebase 的服務了!