Incrementing FBCounter multiple times in a single call
A FlowBoost user asked how to add multiple event registrants in a single webhook call, specifically for the case where there’s a VIP plus a certain # of guests.
It’s easy using JavaScript’s built-in async features, and it doesn’t take any more time than a single FBCounter update!
If your basic call is like this:
let counterName = `/eventCounters/v1/{{Program.Id}}`;
FBCounter.autoAdd(counterName)
.then(newEntry => newEntry.entryIndex)
.then(success)
.catch(failure);
Then expand that to call FBCounter.autoAdd
multiple times:
let counterName = `/eventCounters/v1/{{Program.Id}}`,
numberToAdd = 3;
Promise.all(
Array(numberToAdd)
.fill(counterName)
.map(FBCounter.autoAdd)
)
.then(newEntries =>
Math.max(...newEntries.map(newEntry => newEntry.entryIndex))
)
.then(success)
.catch(failure);
Only real trick in there is returning the maximum entryIndex
value among all the parallel updates. Remember, the seemingly “last” one in the array doesn’t necessarily finish last, by definition.
So you wait for them all to complete (as Promise.all
always does) and then run Math.max
over all of ’em to get the highest index. That’s your final count.
FBCounter v2 will make this easier
On the 2024 roadmap is FBCounter v2, which will be a kajillion times faster thanks to a different backend db and will offer easier plus-something/minus-something methods.