Вопрос: Если я хотел бы использовать службы Firebase в отдельных файлах функций, нужно ли указывать admin.initializeApp();
вверху каждого файла?
Какова текущая лучшая практика для этого?
У меня есть исходная папка, содержащая 3 файла
- auth.ts - admin.initializeApp находится вверху этого файла
- http.ts - добавитьэто здесь, если я хочу использовать службы Firebase?
- index.ts
Мой файл index.ts:
export { basicHTTP, advanceHTTP, api } from "./http";
export { createUserRecord } from "./auth";
Мой файл auth.ts используетthe admin.firestore ():
import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
admin.initializeApp();
const db = admin.firestore();
export const createUserRecord = functions.auth
.user()
.onCreate((user, context) => {
const userRef = db.doc(`users/${user.uid}`);
return userRef.set({
name: user.displayName,
createdAt: context.timestamp,
nickname: "bubba"
});
});
Мой файл http.ts содержит следующее: что мне делать, если я хочу использовать службу firebase в этой функции ?:
import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
// Express
import * as express from "express";
import * as cors from "cors";
// Most basic http function
export const basicHTTP = functions.https.onRequest((request, response) => {
response.send("Hello from firebase");
});
export const advanceHTTP = functions.https.onRequest((request, response) => {
const name = request.query.name;
if (!name) {
response.status(400).send("You must supply a name");
}
response.send(`Hi there ${name}`);
});
// Custom middleware
const auth = (request, response, next) => {
if (!request.header.authorization) {
response.status(400).send("Unauthorized. Access denied");
}
next();
};
// Multi Route ExpressJS HTTP Function
const app = express();
app.use(cors({ origin: true }));
app.use(auth);
app.get("/cat", (request, response) => {
response.send("Cat");
});
app.get("/dog", (request, response) => {
response.send("dog");
});
export const api = functions.https.onRequest(app);