DeprecationWarning: Listening to events on the Db class has been deprecated and will be removed in the next major version

node.jsMongodbMongooseDeprecation Warning

node.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.

(node:44612) DeprecationWarning: Listening to events on the Db class has been deprecated and will be removed in the next major version

Solution 3 - node.js

Same Error enter image description here

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.

Reference URL

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)

  1. Go to node_modules (it is that one folder with a lot of files) folder in your node_js application.

  2. Go to multer-gridfs-storage (inside node_modules)

  3. Go to lib folder (inside multer-gridfs-storage)

  4. Open gridfs.js

  5. Find this comment (// This are all the events that emit errors)

  6. 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.

Issue Link

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKritagya KhandelwalView Question on Stackoverflow
Solution 1 - node.jsztomView Answer on Stackoverflow
Solution 2 - node.jsAvani KhabiyaView Answer on Stackoverflow
Solution 3 - node.jsMarvinView Answer on Stackoverflow
Solution 4 - node.jshersheys17View Answer on Stackoverflow
Solution 5 - node.jsSEYED AHMADView Answer on Stackoverflow
Solution 6 - node.jskoshurView Answer on Stackoverflow