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;