DeprecationWarning: Listening to events on the Db class has been deprecated and will be removed in the next major version
node.jsMongodbMongooseDeprecation Warningnode.js Problem Overview
I am using mongoose and mocha for MongoDB schema design and API development I am getting this warning... what does this mean, how it will affect me and what is the fix??
Below the actual warning text:
>(node:9872) DeprecationWarning: Listening to events on the Db class has been deprecated and will be removed in the next major version.
node.js Solutions
Solution 1 - node.js
UPDATE
[email protected] is out.
Just update mongodb driver and mongoose:
npm i mongodb mongoose
This is caused by the [email protected] native driver which is used by mongoose.
#1 You can downgrade mongodb to version 3.6.3 (described here).
#2 Or downgrade mongoose from 5.11.16 back to 5.11.15:
npm uninstall mongoose
npm install mongoose@5.11.15
#3 Or just wait for the release of [email protected].
Solution 2 - node.js
For all those looking for an answer for this, there is a question posted on Mongodb forum and the answer is acknowledged by Mongodb concerned person.
The answer given by @kmgt is correct. The error can be ignored safely and will be fixed in upcoming release of Mongodb Nodejs driver or downgrading Mongoose version to 5.11.15 will help.
Solution 3 - node.js
But As far as I know its a new version compatibility bug, after searching about this current bug version, I found this comment session and according to one of them, it is safe to ignore this warning.
Solution 4 - node.js
If you are using mongoose version 5.11.16 or a higher version, you will see this error. You can solve this issue by downgrading it to version 5.11.15.
>npm uninstall mongoose
>npm i [email protected]
Although this is being discussed in the community and many comment sections and it is a warning because of a compatibility bug and it might not harm to ignore it. It is suggested that they will fix it in the next update.
Solution 5 - node.js
You can use mongoose version 5.11.13
Solution 6 - node.js
OK so I found a fix for this problem.
Task : Upload Image on mongoDB as binary data, using buckets, chunks etc.
Code:
const express = require("express");
const router = express.Router();
const User = require('../models/user');
const grid = require('gridfs-stream');
const GridFsStorage = require('multer-gridfs-storage');
const util = require("util");
const crypto = require('crypto');
const path = require('path');
const methodOverride = require('method-override');
const bodyParser = require('body-parser');
const dotenv = require("dotenv").config({path: "./config/config.env"});
const multer = require('multer');
const storage = new GridFsStorage({
url: process.env.MONGO_URI,
options: {
useUnifiedTopology: true
},
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'uploads'
};
resolve(fileInfo);
});
});
}
});
var uploadFile = multer({storage: storage}).single("file");
var uploadFilesMiddleware = util.promisify(uploadFile);
module.exports = uploadFilesMiddleware;
> Problem: > > Deprecation Warning Listening to events on the Db class has been > deprecated and will be removed in the next major version.
Fix:
So most probably the problem is not because of you. It is in the package itself. (check out the reference link above)
-
Go to node_modules (it is that one folder with a lot of files) folder in your node_js application.
-
Go to multer-gridfs-storage (inside node_modules)
-
Go to lib folder (inside multer-gridfs-storage)
-
Open gridfs.js
-
Find this comment (// This are all the events that emit errors)
-
Replace This
this.db .on('error', errEvent) .on('parseError', errEvent) .on('timeout', errEvent) .on('close', errEvent);
With this
this.client
.on('error', errEvent)
.on('parseError', errEvent)
.on('timeout', errEvent)
.on('close', errEvent);
> Basically change replace 'db' with 'client'.
You can also go to the official page and check out the current issues there it is clearly mentioned that multer-gridfs-storage has debrication waring issue.