As the title says, I want to add extra methods to the mongodb drivers.
Currently i’m using a collection instance to to insert, delete documents in my database like this:
// collName.js
const client = new MongoClient(uri);
const db = client.db("dbName");
export default const collection = db.collection("collName");
//file1.js
import collection form "collName.js"
cont data = [ ]
collection.insertMany(data)
But I would like to add some methods to the collection instance, to do something like this:
collection.modifiedInsertMany(data)
I guess, I could create my own class:
class myCollection {
col = db.collection("collName");
function modifiedInsertMany(data) {
// do stuff with data
return col.insertMany(data);
}
}
But if i did that I would have to rewrite every single method of the original mongodb.Collection, isn’t that correct?
If possible, I want to keep all the methods of the mongodb.Collection and just add a couple of my methods.
I thought doing that but how do I call super() in my class constructor?
This is written in the mongodb docs:
The Collection class is an internal class that embodies a MongoDB collection allowing for insert/update/remove/find and other command operation on that MongoDB collection.
COLLECTION Cannot directly be instantiated. link
// collName.js
const client = new MongoClient(uri);
const db = client.db("dbName");
console.log(db.collection("collName"))
Indeed it appears to be a collection instance probably called under the hood.
But I do not think you can modify a class definition unless you add it to MongoDB code itself, and extending won’t be useful here. You can, I think, modify the prototype of the class: