feat: add Parse.Object.saveAllSettled to support more robust saving of multiple Parse Objects #1432
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New Pull Request Checklist
Issue Description
Related issue: #494 #799 #1433 and this StackOverflow issue
Parse.Object.saveAll
can create data consistency issues. BecausesaveAll
(which uses the/batch
endpoint) will reject if any of the save items in the list fails, you can end up with 19 saved objects and 1 unsaved object. If the cause of the failure was a network delay, then thesaveAll
will automatically retry, with all 20 objects again - which leads to duplicated objects on the server.Approach
Parse.Object.saveAllSettled
fixes this problem, by using the Promise.allSettled method and individual, staggeredobject. save()
calls - which waits for the saving of all the objects in the list to resolve or reject, then only tries to resave any objects that didn't successfully save the first time.TODOs before merging