我有一个带有 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>
的项目中为此创建了一个新文件夹。myproject/backend/functions
文件夹myproject/backend/functions
然而,firebase cli 检测到项目根文件夹中的 firebase 设置; firebase init firestore
。它会继续修改该文件。
我应该如何初始化我的 angular 项目中的文件夹以从我的项目内部部署一些 firebase 函数,同时保持我的 SSR?
我正在尝试实现与文档类似的情况:https://firebase.google.com/docs/functions/get-started
答案 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 会尝试查找配置文件,因此它会在找到的第一级停止,因此不会检查配置是否已经嵌套。