Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 是否可能有一个Firebase功能,该功能由位于单独Firebase项目中的Firestore更改触发?_Node.js_Firebase_Google Cloud Firestore_Google Cloud Functions - Fatal编程技术网

Node.js 是否可能有一个Firebase功能,该功能由位于单独Firebase项目中的Firestore更改触发?

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

假设我有一个名为“a”的Firebase项目。在这个项目中,我有一个由云Firestore触发的Firebase函数,当Firestore中的文档发生更改时需要运行该函数。默认情况下,Firebase函数将侦听项目A上Firestore中的更改

然而,假设我有一个特殊的用例,其中有第二个名为“B”的Firebase项目。我需要在项目B中的Firestore发生更改时触发项目A中的Firebase功能

这可能吗?Firebase文档确实显示了初始化多个项目,这将允许我连接到多个数据库,例如:

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) => { /* ... */ });