Зависание транзакции Firestore - PullRequest
       16

Зависание транзакции Firestore

0 голосов
/ 04 августа 2020

Я пытаюсь прочитать документ с помощью транзакции и обновить тот же документ без транзакции, если выполняется определенное условие. Поэтому я ожидаю, что транзакция завершится неудачно (, потому что точка транзакции, если я прав, будет atomi c, иначе говоря, сбой, если прочитанный документ изменился во время транзакции ) и задача записи (без транзакции) для успешного завершения.

Однако код здесь просто зависает навсегда.

Как достичь моих ожиданий выше? (Или единственный способ - выбросить ошибку вручную ??)

        await this.firestoreProvider.fs.runTransaction(async transaction => {
            const update = {
                foo: 'foo',
            }
            const test = await transaction.get(this.firestoreProvider.testsRef.doc('test'));
            console.log(test.data());
            await this.firestoreProvider.testsRef.doc('test').set(update);
            // do not continue if the above line caused this transaction to fail
            // ... some more writes using the transaction ...
        })

В документации сказано:

Транзакция может завершиться неудачно по следующим причинам:

...

Транзакция прочитала документ, который был изменен вне транзакции. В этом случае транзакция автоматически запускается снова. Транзакция повторяется конечное количество раз.

Я пытался установить maxAttempt на 5, но он все равно зависает навсегда.

...