Comments (2)
The code within runTransaction
is retried on contention. You should not write any logic that relies on how often it is executed. My guess as what to is happening here is that your transactions fail to commit, and hence we re-run your code, which explains the additional logging output. To determine whether a transaction was committed correctly, you can modify your code as such:
return firestore.runTransaction(function (transaction) {
var documentRef = firestore.doc(input.counter);
return transaction.get(documentRef).then(function (doc) {
if (doc.exists) {
var count = doc.get("count") || 0;
if (count >= input.maxCount) {
return Promise.resolve(count);
}
transaction.update(documentRef, { count: ++count });
return Promise.resolve(count);
}
transaction.create(documentRef, { count: 1 });
return Promise.resolve(1);
});
}).then(count => {
console.log('Updated counter to ' + count);
});
Please let us know if this helped resolve your issue.
from nodejs-firestore.
Hoo, tricky.
Okay, I've updated my test code and it seems to be working as expected now. I'm gonna revisit my application's logic.
Thanks for your valuable response. It would be nice if the doc could include this information!
from nodejs-firestore.
Related Issues (20)
- Firestore class: getAll() supports field mask failed HOT 1
- Query class: can order by FieldPath.documentId() failed HOT 1
- Aggregation queries: "after each" hook for "no filter, explicit orderBy, document reference cursor" failed
- count queries: "after each" hook for "counts 1 document" failed
- Improve read performance by using stale reads HOT 8
- Setting Firestore databaseId HOT 2
- Client initialization: succeeds for DocumentReference.set() failed HOT 1
- count queries using aggregate api: "after each" hook for "counts with startAt, endAt and offset with DocumentReference cursor" failed
- count queries using aggregate api: "after each" hook for "counts multiple documents with filter" failed
- Aggregation queries: "after each" hook for "performs sum that is negative" failed
- Using document set function, got Error: 5 NOT_FOUND HOT 1
- Improve network latency of `runTransaction()` routine HOT 4
- Aggregation queries: "after each" hook for "performs sum only on numeric fields" failed
- FieldPath only escapes the first `\` and '`', resulting in INVALID_ARGUMENT response HOT 1
- [Firestore] `where` should use a "type safe" approach HOT 1
- Query class: can query by FieldPath.documentId() failed HOT 1
- Firestore Timestamp toMills() not working HOT 1
- Improve TS HOT 1
- When support for range and inequality filters on multiple fields in a single query and support for query explain will be added to the library? HOT 1
- Deprecation warning for servicePath can't be resolved in TypeScript. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nodejs-firestore.