使用 Firestore Cloud Functions 进行计数

Ale*_*dra 4 firebase google-cloud-platform google-cloud-functions google-cloud-firestore

我喜欢使用 firestore 云函数来计算子集合中的文档数量。

我的数据库如下所示: groups/{groupId}/members/{memberId}

我喜欢计算每个组的成员数量(memberId)。这意味着每个组可以有不同数量的成员,并且可以灵活地增加或减少。

我会对你的想法感到高兴:-)。

Rob*_*ips 5

我花了一段时间才使其正常工作,所以我想将其分享给其他人使用:

'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();

exports.countDocumentsChange = functions.firestore.document('library/{categoryId}/documents/{documentId}').onWrite((change, context) => {

    const categoryId = context.params.categoryId;
    const categoryRef = db.collection('library').doc(categoryId)
    let FieldValue = require('firebase-admin').firestore.FieldValue;

    if (!change.before.exists) {

        // new document created : add one to count
        categoryRef.update({numberOfDocs: FieldValue.increment(1)});
        console.log("%s numberOfDocs incremented by 1", categoryId);

    } else if (change.before.exists && change.after.exists) {

        // updating existing document : Do nothing

    } else if (!change.after.exists) {

        // deleting document : subtract one from count
        categoryRef.update({numberOfDocs: FieldValue.increment(-1)});
        console.log("%s numberOfDocs decremented by 1", categoryId);

    }

    return 0;
});
Run Code Online (Sandbox Code Playgroud)