
[英]VS Code using wrong Google Cloud account when running project locally with Google Kubernetes Engine
[英]Google firebase database with google functions running locally
提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文。
我有一个连接到 google firebase 实时数据库的应用程序。 我想测试谷歌云功能作为运行后端功能的服务器,每天触发一次或由数据库中的数据更改触发。
我有一个模拟器实例在本地运行,带有我编写的打字稿函数。 我有实时数据库在运行,连接到应用程序并且运行良好。
现在,当我更改数据库中的数据时,不会触发函数。
index.ts 中的函数:
import * as functions from "firebase-functions";
exports.simpleDbFunction = functions.region('europe-west1').database.ref('/some path in the database')
.onCreate((snap, context) => {
console.log("functions triggered by datachange:", snap.val())
});
firebase 项目已连接到正确的项目(使用终端中的界面)。 该应用程序和实时数据库目前正在运行,我可以在 firebase 控制台中看到数据的变化。
我错过了什么?
我还尝试了谷歌文档中更复杂的示例(makeUppercase 函数)。 但是当它不起作用时,我回到了一个简单的函数,该函数在数据创建时触发并打印到控制台。
编辑:我注意到在模拟器 UI 中实时数据库是空的。 它不应该连接到应用程序的实时数据库吗? 这不是我将模拟器连接到特定项目的原因吗? Edit2:我尝试将功能行更改为:
functions.region('europe-west1').database.instance("rtdb 的 URL").ref(...
我收到一条错误消息,指出事件函数的资源成员格式错误
所以我有点解决了它:
我发现您无法真正从本地模拟器连接到实际 google firebase 的生产环境。 (这有点奇怪,你甚至在有机会看到任何代码运行之前就必须致力于这项技术) <--如果我对此有误,请修复我
如果您使用实时数据库云功能,则不能使用“us-central1”以外的任何区域。 如本文档中所述: https ://firebase.google.com/docs/functions/locations
您可以将您的应用程序连接到您机器上的本地模拟器:获取您的数据库实例:
FirebaseDatabase 数据库 = FirebaseDatabase.getInstance();
在第一次数据库操作之前,在您的应用程序中添加以下行(这很奇怪):
database.useEmulator("10.0.2.2", 9004);
将 9004 更改为您本地的实时数据库端口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.