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

但是,假设我有一个特殊的用例,其中有另一个名为“ B”的Firebase项目。我需要在项目B中发生的Firestore发生的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();


但这不允许我在辅助项目上触发Firestore触发的Firebase函数。 Firebase函数直接调用firebase-functions方法,而调用数据库则调用初始化的项目。

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

exports.myFunction = functions.firestore
  .document('...')
  .onWrite((change, context) => { /* ... */ });


我想做些什么?还是有人有解决方法(除了在项目B中创建此Firebase函数以外)?

最佳答案

这是不可能的。云功能触发器只能响应部署它们的项目资源的变化而触发。所有类型的触发器(包括Firestore)都是如此。

如果要运行代码以响应另一个项目中的更改,则必须将该功能部署到该项目。

关于node.js - 是否可能有一个Firebase Function,该Firebase Function是由对Firestore的更改触发的,而该Firestore驻留在该功能的单独Firebase项目中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60442354/

10-16 21:24