59 lines
1.2 KiB
JavaScript
59 lines
1.2 KiB
JavaScript
import MongoClient from 'mongodb';
|
|
|
|
export default class MongoSaver {
|
|
|
|
constructor(url) {
|
|
this.url = url;
|
|
}
|
|
|
|
connect() {
|
|
let saver = this;
|
|
return new Promise((resolve, reject) => {
|
|
if (!saver.ready) {
|
|
MongoClient.connect(saver.url, (err, db) => {
|
|
if (err) {
|
|
console.log('Unable to connect to the mongoDB server. Error:', err);
|
|
reject(err);
|
|
} else {
|
|
console.log('Connection established to', this.url);
|
|
saver.db = db;
|
|
saver.collection = db.collection('results');
|
|
saver.ready = true;
|
|
resolve();
|
|
}
|
|
});
|
|
} else {
|
|
resolve();
|
|
}
|
|
});
|
|
}
|
|
|
|
save(results) {
|
|
let resultsForMongo = Object.keys(results).map((key) => {
|
|
return results[key]
|
|
});
|
|
this.collection.insert(resultsForMongo);
|
|
}
|
|
|
|
async close() {
|
|
try {
|
|
//Close connection
|
|
await this.disconnect();
|
|
} catch (e) {
|
|
console.log("error closing", e);
|
|
}
|
|
}
|
|
|
|
async disconnect() {
|
|
return new Promise((resolve, reject) => {
|
|
this.db.close();
|
|
resolve();
|
|
});
|
|
}
|
|
|
|
async open() {
|
|
await this.connect();
|
|
}
|
|
|
|
}
|