javascript - 在Firebase函数中,如何在使用后清理数据库引用?

标签 javascript firebase firebase-realtime-database google-cloud-functions

我的函数运行完毕后如何删除ref?有必要吗?我希望我的函数尽快运行,并且不希望“东西”堆积起来。

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

admin.initializeApp(functions.config().firebase);

exports.myFunction = functions.database.ref('/path/{uid}').onWrite(event => {
   const ref = event.data.adminRef.root.child('something').child(event.params.uid);

   return ref.transaction(current => {
      if (event.data.exists() && !event.data.previous.exists()) {
         return _.toInteger(current) + _.toInteger(_.get(data, 'value', 0));
      }
   }).then(() => {
      return null; // Avoid "Error serializing return value: TypeError: Converting circular structure to JSON"
    });
 });

最佳答案

DatabaseReference 不是您可以“删除”的内容。它只是指向数据库中某个位置的指针。该文档有一个页面: https://firebase.google.com/docs/reference/admin/node/admin.database.Reference

您唯一可以删除/分离的是使用 ref.on(...)ref.off(...) 设置的回调,但您的代码中没有回调,我认为 ref.once() 应该可以在函数中完成大部分时间的工作。

需要明确的是:ref.transactions() 不必分离,它们只运行一次,即没有回调。与 ref.set()ref.once() 相同。

关于javascript - 在Firebase函数中,如何在使用后清理数据库引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46745236/

相关文章:

javascript - ExtJS:如何自定义组合框选择器的键导航?

javascript - 在 select2 的选项中搜索多个单词

Python-Firebase 监听器实现

swift - 在 Swift 中使用快照值填充 TableViewCells

java - Android Firebase : invalid case sensitive name

node.js - 我无法读取 Firebase Functions 上的数据

javascript - 检查 IF 语句中哪个条件为真

javascript - 将标题固定到滚动容器中的下一个

android - 是否可以序列化和反序列化包含对象作为 Firebase 中的变量的对象?

firebase - Flutter:通过存储库对 Firebase Firestore 进行单元测试