Реализовать распределенный счетчик на Firebase - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь реализовать распределенный счетчик из трех сегментов на /counters/{i}.

Изначально я хочу проверить, существует ли документ / коллекция, если ее не нужно создавать заново, с помощью userCountустановите на 0.

Если он существует, то вышеуказанный шаг пропускается, а userCount увеличивается на единицу.

Как мне это сделать?Это мой код:

  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 });
    //   });
    // });
  }
...