diff options
| author | Tyler Schicke <tyler_schicke@brown.edu> | 2019-04-13 14:10:12 -0400 |
|---|---|---|
| committer | Tyler Schicke <tyler_schicke@brown.edu> | 2019-04-13 14:10:12 -0400 |
| commit | c4ce158bd87ee837b54f5b7b7a4d7610296c214b (patch) | |
| tree | 8b364896bd2b381cacde3828d1e455d181a267df /src | |
| parent | 6dd21d8ca48beef6d5054f60d04bb4412b6b33b5 (diff) | |
Fixed bug with database synchronization
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/database.ts | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/src/server/database.ts b/src/server/database.ts index 0bc806253..f0435a6c1 100644 --- a/src/server/database.ts +++ b/src/server/database.ts @@ -18,31 +18,32 @@ export class Database { if (this.db) { let collection = this.db.collection('documents'); const prom = this.currentWrites[id]; - const run = (promise: Promise<void>, resolve?: () => void) => { - collection.updateOne({ _id: id }, { $set: value }, { - upsert: true - }, (err, res) => { - if (err) { - console.log(err.message); - console.log(err.errmsg); - } - // if (res) { - // console.log(JSON.stringify(res.result)); - // } - if (this.currentWrites[id] === promise) { - delete this.currentWrites[id]; - } - if (resolve) { + let newProm: Promise<void>; + const run = (): Promise<void> => { + return new Promise<void>(resolve => { + collection.updateOne({ _id: id }, { $set: value }, { + upsert: true + }, (err, res) => { + if (err) { + console.log(err.message); + console.log(err.errmsg); + } + // if (res) { + // console.log(JSON.stringify(res.result)); + // } + if (this.currentWrites[id] === newProm) { + delete this.currentWrites[id]; + } resolve(); - } - callback(); + callback(); + }); }); }; if (prom) { - const newProm: Promise<void> = prom.then(() => run(newProm)); + newProm = prom.then(run); this.currentWrites[id] = newProm; } else { - const newProm: Promise<void> = new Promise<void>(res => run(newProm, res)); + newProm = run(); this.currentWrites[id] = newProm; } } |
