如何从 Angular 项目部署新的 Firebase 功能

时间:2021-01-16 20:51:54

标签: angular firebase

我有一个带有 SSR 的 angular 项目。它作为一个函数托管在 firebase 中。

我也想在这里保留一些与项目相关的 firebase 函数。

  • 我在 {% for message in messages %} {{ message.sender}} says: {{ message.text }} {% endfor %} <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit" value="Send"></button> <form> 的项目中为此创建了一个新文件夹。
  • 我将 cli 导航到 myproject/backend/functions 文件夹
  • 我跑 myproject/backend/functions

然而,firebase cli 检测到项目根文件夹中的 firebase 设置; firebase init firestore。它会继续修改该文件。

我应该如何初始化我的 angular 项目中的文件夹以从我的项目内部部署一些 firebase 函数,同时保持我的 SSR?

我正在尝试实现与文档类似的情况:https://firebase.google.com/docs/functions/get-started

1 个答案:

答案 0 :(得分:2)

Firebase 函数支持使用网络框架。官方文档提供了在函数中使用 Express 处理 http 请求的示例。

const functions = require('firebase-functions');
const express = require('express');
const app = express();

app.get('/api', (req, res) => {
  const date = new Date();
  const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
  res.json({bongs: 'BONG '.repeat(hours)});
});

exports.app = functions.https.onRequest(app);

因此,添加功能的一种方法是在应用导出后添加它们。

exports.helloWatcher =  functions.database.ref('/hello').onWrite(...)

或者在打字稿的情况下

export let helloWatcher =  functions.database.ref('/hello').onWrite(...)

OP 希望在 Angular SSR 项目和其他功能之间进行一些分离。 问题是他无法在另一个内部初始化 firebase 函数,因为它检测到父 firebase 配置。

因此建议的解决方案是在外部文件夹中执行 init,这样 firebase 将创建必要的文件。然后将文件夹移动到原始 firebase 文件夹中。由于 firebase 会尝试查找配置文件,因此它会在找到的第一级停止,因此不会检查配置是否已经嵌套。