假设我有一个名为“ 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/