Transaction fix (#4421)

* When transaction is active, objects.get should search in dirty object first.

Co-authored-by: Andrew Henry <akhenry@gmail.com>
This commit is contained in:
Nikhil
2021-11-15 14:20:02 -08:00
committed by GitHub
parent 933ce7aa3c
commit c8723da098
6 changed files with 25 additions and 3 deletions

View File

@ -184,6 +184,15 @@ ObjectAPI.prototype.get = function (identifier, abortSignal) {
}
identifier = utils.parseKeyString(identifier);
let dirtyObject;
if (this.isTransactionActive()) {
dirtyObject = this.transaction.getDirtyObject(keystring);
}
if (dirtyObject) {
return Promise.resolve(dirtyObject);
}
const provider = this.getProvider(identifier);
if (!provider) {

View File

@ -55,6 +55,17 @@ export default class Transaction {
});
}
getDirtyObject(keystring) {
let dirtyObject;
this.dirtyObjects.forEach(object => {
if (this.objectAPI.makeKeyString(object.identifier) === keystring) {
dirtyObject = object;
}
});
return dirtyObject;
}
start() {
this.dirtyObjects = new Set();
}