10

İşlemi kullanarak bir gerçek zamanlı veritabanı tetikleyicisi olan bir sayacı artırmak kabul edilebilir mi?Firebase için Bulut İşlevleri: Artırma Sayacı

exports.incPostCount = functions.database.ref('/threadsMeta/{threadId}/posts') 
.onWrite(event => { 
    admin.database().ref('/analytics/postCount') 
    .transaction(count => { 
     if (count === null) { 
      return count = 1 
     } else { 
      return count + 1 
     } 
    }) 
}); 

cevap

23

Kesinlikle! Aslında, bu kadar birkaç küçük farklarla birlikte, in this code sample yapıldığını tam olarak nasıl açıklanmıştır:

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; 
    } 
    }); 
}); 

Özellikle, bu örnek bir artım ve alt düğüm oluşturulan veya silinmiş olup olmadığını bağlı olarak azalma durumda hem yönetir.

+1

Mükemmel. Teşekkür ederim. –