11

How to Fix "Buffering timed out after 10000ms" Error in Mongoose

 1 year ago
source link: https://masteringjs.io/tutorials/mongoose/buffering-timed-out-after-10000ms
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

How to Fix "Buffering timed out after 10000ms" Error in Mongoose

Jul 8, 2022

This error happens because you're trying to use a model whose connection hasn't connected to MongoDB. Remember that, in Mongoose, every model has exactly one connection to MongoDB. The buffering timeout is usually due to either registering models on a newly created connection but using mongoose.connect():

const mongoose = require('mongoose');

const schema = new mongoose.Schema({
  name: String
});

async function run() {
  // Create a separate connection and register a model on it...
  const conn = mongoose.createConnection();
  conn.model('User', schema);

  // But call `mongoose.connect()`, which connects MongoDB's default
  // connection to MongoDB. `conn` is still disconnected.
  await mongoose.connect('mongodb://localhost:27017');

  await conn.model('User').findOne(); // Error: buffering timed out ...
}

run();

Or by registering models using mongoose.model() but creating a separate connection:

const mongoose = require('mongoose');

const schema = new mongoose.Schema({
  name: String
});

async function run() {
  // Create a new connection and connect to MongoDB...
  const conn = await mongoose.
    createConnection('mongodb://localhost:27017/test').
    asPromise();

  // But register a model on Mongoose's default connection
  mongoose.model('User', schema);

  await mongoose.model('User').findOne(); // Error: buffering timed out
}

run();

To fix, make sure you call mongoose.connect() if you're defining models by calling mongoose.model():

async function run() {
  await mongoose.connect('mongodb://localhost:27017');
  mongoose.model('User', schema);

  await mongoose.model('User').findOne(); // Works!
}

Want to become your team's MongoDB expert? "Mastering Mongoose" distills 8 years of hard-earned lessons building Mongoose apps at scale into 153 pages. That means you can learn what you need to know to build production-ready full-stack apps with Node.js and MongoDB in a few days. Get your copy!


More Mongoose Tutorials


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK