我已经尝试了使用Cloud Functions的增量计数器示例(https://github.com/firebase/functions-samples/tree/master/child-count),该示例引用的是实时数据库,而不是Firebase Firestore。
我正在跟踪firestore文档,并尝试了一些更改。仍然面临问题,无法为Firestore新文档运行此代码。我是第一次编写云函数,并且不确定我是否写的正确。
exports.countlikechange = functions.database.ref('/posts/{postid}/likes/{likeid}').onWrite(
async (change) => {
const collectionRef = change.after.ref.parent;
const countRef = collectionRef.parent.child('likes_count');
let increment;
if (change.after.exists() && !change.before.exists()) {
increment = 1;
} else if (!change.after.exists() && change.before.exists()) {
increment = -1;
} else {
return null;
}
// Return the promise from countRef.transaction() so our function
// waits for this async event to complete before it exits.
await countRef.transaction((current) => {
return (current || 0) + increment;
});
console.log('Counter updated.');
return null;
});
我想更新父文档中的计数。
答案 0 :(得分:1)
您应该查看documentation for Firestore triggers。您正在编写的是实时数据库触发器,因为函数声明为functions.database
。您将改为使用functions.firestore
。您还将使用Realtime Database API而不是Firestore API。使用Firestore的最终解决方案看上去将与您现在拥有的解决方案完全不同。