Cloud Functions for Firebase: Increment Counter

前端 未结 1 964
渐次进展
渐次进展 2020-12-08 04:56

Is it acceptable to increment a counter with a realtime database trigger using transaction?

exports.incPostCount = functions.database.ref(\'/threadsMeta/{thr         


        
相关标签:
1条回答
  • 2020-12-08 05:46

    Definitely! In fact, that's exactly how it's done in this code sample, although with a few small differences:

    exports.countlikechange = functions.database.ref("/posts/{postid}/likes/{likeid}").onWrite((event) => {
      var collectionRef = event.data.ref.parent;
      var countRef = collectionRef.parent.child('likes_count');
    
      return countRef.transaction(function(current) {
        if (event.data.exists() && !event.data.previous.exists()) {
          return (current || 0) + 1;
        }
        else if (!event.data.exists() && event.data.previous.exists()) {
          return (current || 0) - 1;
        }
      });
    });
    

    Notably, this sample handles both an increment and a decrement case depending on whether the child node is being created or deleted.

    0 讨论(0)
提交回复
热议问题