archivemongo
Version:
Module to archive mongo collections
49 lines (43 loc) • 1.74 kB
JavaScript
const { MongoClient } = require('mongodb'),
assert = require('assert'),
{ promisify } = require('util'),
MongoConnect = promisify(MongoClient.connect);
module.exports = {
ArchieveData : function(mongoDetails, callback){
if(!mongoDetails.mongoDatabaseUrl || !mongoDetails.archiveCollectionName || !mongoDetails.mainCollectionName){
throw new Error("Please provide mongoDatabaseUrl, archiveCollectionName and mainCollectionName as an object like { mongoDatabaseUrl : mongoDatabaseUrl, archiveCollectionName : archiveCollectionName, mainCollectionName : mainCollectionName}")
}else{
MongoConnect(mongoDetails.mongoDatabaseUrl, { useNewUrlParser: true })
.then(db => {
const CreateCollection = promisify(db.createCollection);
CreateCollection(mongoDetails.archiveCollectionName)
.then(archive_collection => { CreateCollection(mongoDetails.mainCollectionName) })
.then(main_collection => {
let cursor = main_collection.find({});
if(cursor.hasNext()){
const CursorNext = promisify(cursor.nextObject);
CursorNext()
.then(item => {
const InsertInArchiveCollection = promisify(archive_collection.insert);
InsertInArchiveCollection(item)
.then(() => {console.log("DOC INSERTED IN ARCHIVE COLLECTION")});
})
}else{
console.log("ALL ARCHIVED");
callback(null, "ALL ARCHIVED");
}
})
})
.catch(err=>{
throw new Error(err);
})
}
}
}
module.exports.ArchieveData(mongoDetails, function(err, done){
if(err){
console.log("Err is : ", err);
}else{
console.log("Done is : ", done)
}
})