我有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?
});
额外的问题:我将消耗多少读写来更新准确性?
谢谢!
答案 0 :(得分:2)
以下应该可以解决问题。请注意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;
}
});