NodeJs MongooseError: Operation 'x.find()` buffering timed out after 10000ms

Dung Do Tien Jan 30 2022 79

Hello Guys, I created a small project with Nodejs and MongoDB (Mongoose) as below:

dbhelper.js

const mongoose = require('mongoose');
require('dotenv').config();

module.exports = async () => {
    var path ="mongodb://localhost:27017/?readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false";
    await mongoose.connect(path, {
        keepAlive: true,
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useFindAndModify: false,
    })
        .then(x => {
            console.log(
                'Connected to Mongo!'
            );
        })
        .catch(err => {
            console.error('Error connecting to mongo', err);
        });
    return mongoose;
};

index.js

const mongo = require('../dbhelper');
module.exports = async (arg1, arg2, arg3) => {

    await mongo().then(mongoose => {
        try{
            console.log('Connected to mongo!!');
            command.execute(client, message, args);
        }
        finally{
            mongoose.connection.close();
        }
    });
};

But when I tried to execute the function that uses a find() operation on the model it threw the following error: MongooseError: Operation 'x.find()` buffering timed out after 10000ms.

Anyone can explain for me and how to resolve it?

Have 1 answer(s) found.
  • D

    Dheeraj Yadav Jan 30 2022

    Yeah, I have same the problem and the reason is related to opening the connection to MongoDB, you need to use async/await and it will be solved for you:

    In your index.js file, you can add more async/await in lines 4 and 7 as below: 

    const mongo = require('../dbhelper');
    module.exports = async (arg1, arg2, arg3) => {
    
        await mongo().then(async mongoose => { // add more async here
            try{
                console.log('Connected to mongo!!');
                await command.execute(client, message, args); // add more await here
            }
            finally{
                mongoose.connection.close();
            }
        });
    };

    I hope it also worked for you.

Leave An Answer
* NOTE: You need Login before leave an answer

* Type maximum 2000 characters.

* All comments have to wait approved before display.

* Please polite comment and respect questions and answers of others.

Popular Tips

X Close