Angular 如何从角度项目部署新的firebase函数

Angular 如何从角度项目部署新的firebase函数,angular,firebase,Angular,Firebase,我有一个SSR的角度项目。它作为功能托管在firebase中 我想在这里保留一些与项目相关的firebase函数 我在项目中为此在myproject/backend/functions中创建了一个新文件夹 我将cli导航到myproject/backend/functions文件夹 我运行firebase init firestore 但是,firebase cli在项目的根文件夹中检测到firebase设置我的项目。它将继续修改该文件 我应该如何初始化angular项目中的文件夹,以便从项

我有一个SSR的角度项目。它作为功能托管在firebase中

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

  • 我在项目中为此在
    myproject/backend/functions
    中创建了一个新文件夹
  • 我将cli导航到
    myproject/backend/functions
    文件夹
  • 我运行
    firebase init firestore
但是,firebase cli在项目的根文件夹中检测到firebase设置<代码>我的项目。它将继续修改该文件

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


我试图实现与文档类似的情况:

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

const functions=require('firebase-functions');
const express=require('express');
常量app=express();
app.get('/api',(请求,res)=>{
const date=新日期();
常数小时=(date.getHours()%12)+1;//伦敦是UTC+1小时;
res.json({bongs:'BONG'。重复(小时)});
});
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函数,因为它检测到父firebase配置


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

您是如何设置在函数中使用SSR运行的?在代码中的某个地方,您应该有一个函数的导出,以便firebase函数可以调用它,为什么不在那里添加更多的导出呢?@Abkarino我使用
ng add@nguniversal/express engine
创建了一个SSR项目。您可以从官方文档中假设设置:@Abkarino主要原因是我不想不必要地将角度代码与云函数代码混用。分离firebase函数可以让我更好地组织代码,更快地阅读和更新代码。其次,我不知道如何在express中部署监听firestore事件的函数,因为这与路由无关。最后,我并不总是想在我的项目中部署所有功能。@Abkarino在angular文件夹外创建文件夹,然后移动它对我来说很有效。到目前为止,我没有看到意外的副作用。留下一个正式的答案,我会在赏金期快结束时接受它,除非有更好的答案出现。我使用第二种方法将文件夹初始化到其他位置,然后将其移动。我无法在我的angular项目中找到导出。除了
server.ts
文件中导出的
app()
,该文件可能会作为firebase函数导出到其他地方。我无法跟踪将
app()
移动到firebase函数的代码所在的位置。它可能在某个图书馆里。因此,这将放弃答案的第一部分作为选项。@RobMonhemius此url显示如何启动项目,您可能也这样做了。我没有分享这个url,因为你已经初始化了你的项目,但也许你想看看那个视频。