crawlers and savers
This commit is contained in:
58
crawler/savers/mongo.js
Normal file
58
crawler/savers/mongo.js
Normal file
@@ -0,0 +1,58 @@
|
||||
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', 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();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user