Node.js 是否可能有一个Firebase功能,该功能由位于单独Firebase项目中的Firestore更改触发?
假设我有一个名为“a”的Firebase项目。在这个项目中,我有一个由云Firestore触发的Firebase函数,当Firestore中的文档发生更改时需要运行该函数。默认情况下,Firebase函数将侦听项目A上Firestore中的更改 然而,假设我有一个特殊的用例,其中有第二个名为“B”的Firebase项目。我需要在项目B中的Firestore发生更改时触发项目A中的Firebase功能 这可能吗?Firebase文档确实显示了初始化多个项目,这将允许我连接到多个数据库,例如:Node.js 是否可能有一个Firebase功能,该功能由位于单独Firebase项目中的Firestore更改触发?,node.js,firebase,google-cloud-firestore,google-cloud-functions,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,假设我有一个名为“a”的Firebase项目。在这个项目中,我有一个由云Firestore触发的Firebase函数,当Firestore中的文档发生更改时需要运行该函数。默认情况下,Firebase函数将侦听项目A上Firestore中的更改 然而,假设我有一个特殊的用例,其中有第二个名为“B”的Firebase项目。我需要在项目B中的Firestore发生更改时触发项目A中的Firebase功能 这可能吗?Firebase文档确实显示了初始化多个项目,这将允许我连接到多个数据库,例如: co
const admin = require("firebase-admin");
const serviceAccount = require("path/to/serviceAccountKey.json");
const secondaryAppConfig = {
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
};
// Initialize another app with a different config
const secondary = firebase.initializeApp(secondaryAppConfig, "secondary");
// Retrieve the database.
const secondaryDatabase = secondary.database();
我想做的可能吗?或者是否有人有解决办法(除了在project B中创建此Firebase功能)?这是不可能的。云函数触发器只能在部署它们的项目的资源发生变化时触发。这适用于所有类型的触发器,包括Firestore
如果希望代码运行以响应另一个项目中的更改,则必须将该函数部署到该项目。目前,只有写入到Cloud Firestore才能触发属于同一项目的云函数。不可能触发在另一个项目中定义的云函数
例如,典型的解决方案是在二级项目中调用HTTP函数,然后您可以为其配置完整的URL。我不确定它是否可以在一个代码库中完成-这是因为缺乏经验。我想说,根据您的设置,调用函数可以通过HTTP调用()触发被调用函数
这可能需要一个付费的Firebase计划,但我不确定它()是否有文件记录了对这个严格的“否”的引用?根据我使用GCP的经验,我认为可以在单次运行时创建配置了任何项目上下文的
函数
实例。据我所知,没有文档,但我曾经在谷歌的云函数上工作过,所以我100%确定这是真的。如果您想直接听到Firebase的消息,请联系Firebase支持。正如在其他两个答案中所说,您可以在另一个项目中使用HTTP触发的云函数来解决这个问题。但这是唯一的选择。
const functions = require('firebase-functions');
exports.myFunction = functions.firestore
.document('...')
.onWrite((change, context) => { /* ... */ });