本地模拟器分布式计数器扩展的实现

Pau*_*aul 3 firebase firebase-tools google-cloud-functions google-cloud-firestore

分布式计数器的 firebase 扩展可以直接安装在云中并且工作得很好。要为应用程序开发新功能,我需要在模拟器上执行此操作,以免中断正在运行的服务器。

由于 firebase 扩展只是云函数*,我考虑通过从扩展本身获取源代码来在我的模拟器中实现云函数。到目前为止,这对于其他扩展来说效果很好......

实施过程中的错误和故障

在实现 javaScript 版本时,我收到以下错误:

function ignored because the unknown emulator does not exist or is not running.

这个问题可以通过重写函数的导出行来解决index.js,但无论如何都不会提供扩展的预期功能:

exports.worker = functions.handler.firestore.document.onWrite(async (change, context) => {...});
Run Code Online (Sandbox Code Playgroud)

exports.worker = functions.firestore.document("").onWrite(async (change, context) => {...});
Run Code Online (Sandbox Code Playgroud)

问题

我是否缺少一些实现或缺少模拟器?我如何实现这个 firestore 扩展?

还有一些类似的问题,但并没有真正谈论整个扩展的实现:

Joe*_*ley 10

火力战士在这里

更新:Firebase 模拟器套件现在支持模拟扩展!要模拟此扩展,首先您需要将其添加到您的扩展清单中。最简单的方法是从本地 firebase 目录运行:

firebase ext:install firebase/firestore-counter
Run Code Online (Sandbox Code Playgroud)

然后,下次启动模拟器时,将下载并模拟扩展的代码。

需要注意的一件事是分布式计数器扩展使用预定函数。模拟器套件不会为您触发这些,因此您必须通过向 PubSub 模拟器发送 PubSub 消息来自行触发它们。这个答案很好地解释了如何做到这一点