【发布时间】:2022-01-04 09:10:19
【问题描述】:
假设我在名为“test”的辅助实时数据库中有一个节点,其值为“foobar”。 我想设置一个防止它被删除的功能。更现实地,这个节点会有几个子节点,函数首先检查它是否可以被删除。但是,在这里我们永远不允许删除它以保持代码尽可能短。 所以我添加了一个触发 onDelete 的函数,只是重写了值。
简而言之:
二级数据库有:{"test":"foobar"}
onDelete 函数:
exports.testDelete = functions.database
.instance("secondary")
.ref("test")
.onDelete(async (snap, context) => {
await snap.ref.set(snap.val());
});
使用模拟器运行此程序时,我希望当我删除节点时,该节点会重新出现在辅助数据库中,这就是部署到生产环境时发生的情况。在模拟器中,节点重新出现,但出现在主数据库而不是辅助数据库中。我看到解决此问题的唯一方法是将snap.ref.set(snap.val()) 替换为admin.app().database("https://{secondarydatabasedomain}.firebasedatabase.app").ref().child("test").set(snap.val()),这看起来有点麻烦,只是为了让模拟器工作。
我在这里做错了吗?
我使用的是节点 14 和 firebase CLI 版本 9.23.0
【问题讨论】:
-
这似乎是一个参考问题..这个问题解决了吗?
-
不幸的是它没有解决,使用最新的 firebase-tools 版本 9.23.1
-
发表了答案,有用吗?
标签: node.js firebase firebase-realtime-database google-cloud-functions firebase-tools