aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/database.ts40
1 files changed, 19 insertions, 21 deletions
diff --git a/src/server/database.ts b/src/server/database.ts
index 51eefeb8d..6cc9945b9 100644
--- a/src/server/database.ts
+++ b/src/server/database.ts
@@ -16,29 +16,27 @@ 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, result) => {
- if (err) {
- console.log(err.message);
- console.log(err.errmsg);
- }
- if (this.currentWrites[id] === promise) {
- delete this.currentWrites[id];
- }
- if (resolve) {
- resolve();
- }
- callback();
+ const run = (): Promise<void> => {
+ let newProm = 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();
+ });
});
+ return newProm;
};
-
- let newProm: Promise<void> = new Promise<void>(resolve => run(newProm, resolve));
- this.currentWrites[id] = newProm;
- if (prom)
- prom.then(() => newProm);
- else newProm;
+ this.currentWrites[id] = prom ? prom.then(run) : run();
}
}