我正在尝试在/counters/{i}
处实现一个三分片分布式计数器。
最初,我想检查userCount设置为0的文档/集合是否存在,如果不存在,则需要重新创建。
如果确实存在,则跳过上述步骤,并将userCount加1。
我该怎么做?到目前为止,这是我的代码:
incrementUserCount() {
// First check to see if user exists
for (let i = 0; i < environment.numberOfShards; i++) {
const newShardReference = this.afs.firestore.collection('counters').doc(i.toString());
this.afs.firestore.batch().set(newShardReference, { userCount: 0 });
}
this.afs.firestore.batch().commit();
// Steps to increment user count
// const shardId = Math.floor(Math.random() * environment.numberOfShards).toString();
// const shardReference = this.afs.firestore.collection('counters').doc(shardId);
// return this.afs.firestore.runTransaction(t => {
// return t.get(shardReference).then(doc => {
// const newCount = doc.data().count + 1;
// t.update(shardReference, { count: newCount });
// });
// });
}