From c4ce158bd87ee837b54f5b7b7a4d7610296c214b Mon Sep 17 00:00:00 2001 From: Tyler Schicke Date: Sat, 13 Apr 2019 14:10:12 -0400 Subject: Fixed bug with database synchronization --- src/server/database.ts | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) (limited to 'src') 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, 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; + const run = (): Promise => { + return new Promise(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 = prom.then(() => run(newProm)); + newProm = prom.then(run); this.currentWrites[id] = newProm; } else { - const newProm: Promise = new Promise(res => run(newProm, res)); + newProm = run(); this.currentWrites[id] = newProm; } } -- cgit v1.2.3-70-g09d2