如何使用FireBase云函数更新FireStore文档的值

wljmcqd8  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(116)

我有firestore数据库,我想触发一个云函数时,有一个firestore文件的字段的变化。我想云函数来看看有什么变化,并使用新的数据来更新firestore文件的另一个字段。
示例
让我们假设图片中的文档已经更改,并具有下图中的新值

现在我想更新accuracy的值为successes / attempts,即我想精度为6/11 = 0.54
我应该在函数中写些什么呢?下面是我目前为止写的

exports.calculateAccuracy = functions.firestore.document('/users/{userId}/wordScores')
    .onUpdate((change, context) => {

      //what to write here?

    });

附加问题:我将消耗多少读取/写入来更新精度?
谢谢!!!

esyap4oy

esyap4oy1#

下面的代码应该可以完成这个任务,注意Cloud Firestore触发器(users/{userId}/wordScores/{scoreDocId})中的路径:它指向一个文档,而不是一个集合。更多信息在documentation

exports.calculateAccuracy = functions.firestore
    .document('users/{userId}/wordScores/{scoreDocId}')
    .onUpdate((change, context) => {

        const newValue = change.after.data();
        const previousValue = change.before.data();

        if ((newValue.attempts !== previousValue.attempts) || (newValue.successes !== previousValue.successes)) {
            return change.after.ref.update({
                accuracy: newValue.successes / newValue.attempts
            });

        } else {
            return null;
        }

    });

相关问题