From 0317dc723ad57e2db219eb1d874ee2217463370c Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Wed, 11 Jan 2023 10:21:27 +0000 Subject: [PATCH] Add check before dropping collection --- src/services/dbAccess.services.js | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/services/dbAccess.services.js b/src/services/dbAccess.services.js index c97372c..9efbad4 100644 --- a/src/services/dbAccess.services.js +++ b/src/services/dbAccess.services.js @@ -13,20 +13,24 @@ const client = new MongoClient(uri); const db = client.db(dbName); async function dropCollection(coll){ - log.out(`DbAccess.dropCollection: checking if collection exists: ${coll}`) - - //Some Code Here: await client.connect(); - var cols = await db.listCollections().toArray() - log.out(`dbAccess.dropCollection: Existing collections: ${JSON.stringify(cols)}`) + + // check if collection contains any documents, if it doesn't, it is either empty or non-existent - it doesn't need dropping. + var collection = db.collection(coll); + var count = await collection.countDocuments(); + log.out(`DbAccess.dropCollection: Collection '${coll}' contains ${count} documents`) + if (count == 0) { + log.out(`DbAccess.dropCollection: Collection '${coll}' is empty. Do not need to drop`) + } else { + log.out(`DbAccess.dropCollection: dropping collection: '${coll}'`) + db.dropCollection(coll); + log.out(`DbAccess.dropCollection: dropped collection: '${coll}'`) + } + // ALTERNATIVE METHOD - Appears to not be needed: + // This code returns and prints an array containing an object for each existing collection. +// var cols = await db.listCollections().toArray() +// log.out(`dbAccess.dropCollection: Existing collections: ${JSON.stringify(cols)}`) // If (any object in the Array contains name:{coll} then exsists. If not doesn't exist.) - - - // If Collection Exists: - log.out(`DbAccess.dropCollection: dropping collection: ${coll}`) - db.dropCollection(coll); - log.out(`DbAccess.dropCollection: dropped collection: ${coll}`) - // Else Do Nothing } async function putCorpus(data){