0

I'm following a tutorial of MERN stack, obviously I'm new to MERN stack (and to mongoose), now the problem I'm facing is when I change this line

module.exports = mongoose.model("user", UserSchema);

with these in my User schema

User = mongoose.model("user", UserSchema);
User.createIndexes({maxTimeMS: 30000});
module.exports = User;

I get this error

const err = new MongooseError(message); ^ MongooseError: Operation users.createIndex() buffering timed out after 10000ms

My code:

index.js

const connectToMongo = require("./db");
connectToMongo();
const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.use("/api/auth", require("./routes/auth"))
app.use("/api/notes", require("./routes/notes"))

app.listen(port, () => {
  console.log(`Example app listening on port http://127.0.0.1:${port}`)
})

db.js

const mongoose = require("mongoose");
const mongoURI = "mongodb://localhost:27017/notebook";
mongoose.set('strictQuery', true);

const connectToMongo = async () => {
    mongoose.connect(mongoURI, ()=>{
        console.log("Connected to Mongo SUCCESSFULLY")
    });
};

module.exports = connectToMongo;

User schema

const mongoose = require("mongoose");
const { Schema } = mongoose;

const UserSchema = new Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true,
        unique: true
    },
    password: {
        type: String,
        required: true
    },
    timestamp: {
        type: Date,
        default: Date.now
    }
});
User = mongoose.model("user", UserSchema);
User.createIndexes({maxTimeMS: 30000});
module.exports = User;

auth.js

const express = require("express");
const User = require("../models/User");
const router = express.Router();
const { body, validationResult } = require("express-validator")

router.post("/api/auth",[
    body("name", "Enter a valid name").isLength({min: 3}),
    body("password", "Password must be atleast 8 characters long").isLength({min: 8}),
    body("email", "Enter a valid email").isEmail()
], (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }
    const user = User(req.body)
    user.create({
        name: req.body.username,
        email: req.body.username,
        password: req.body.password,
        timestamp: req.body.timestamp
      }).then(user => res.json(user)).catch(err=>{
        res.send("<h1> Please enter unique email (another user with this email already exists) </h1>")
      })
});

module.exports = router;
  • This can be problem with connectivity. See [this](https://stackoverflow.com/questions/65408618/mongooseerror-operation-users-findone-buffering-timed-out-after-10000ms?rq=1) – Usaid Mar 05 '23 at 09:55

0 Answers0