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

时间:2017-10-14 13:42:18

标签: 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"
    });
 });

1 个答案:

答案 0 :(得分:3)

DatabaseReference你无能为力"删除"。它只是指向数据库中某个位置的指针。该文档有一个页面: https://firebase.google.com/docs/reference/admin/node/admin.database.Reference

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

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