I have connected to MongoDB using mongoose, no problem there at all. But when I try to send a Get request to create a new user in DB, I get this; "mongoose Error: Operation users.insertOne()
buffering timed out after 10000ms" When I look up for the solutions, it was usually about connection to MongoDB, so the suggestions didn't work for me. Here is the code: Routes/auth.js:
const express = require("express");
const authRouter = express.Router();
const User = require("../models/User");
//REGISTER
authRouter.get("/register", async (req, res) => {
try {
const user = await new User({
username: "yessilyurt",
email:"aaa@aa.com",
usernickname: "Burak Yesilyurt",
password: "123456",
});
await user.save();
res.send("user registered");
} catch (err) {
console.log(err);
}
});
module.exports = authRouter;
models/User.js:
const mongoose = require("mongoose");
const UserSchema = mongoose.Schema(
{
username: {
type: String,
required: true,
min: 1,
max: 30,
unique: true,
},
email: {
type: String,
required: true,
min: 6,
max: 35,
unique: true,
},
password: {
type: String,
required: true,
min: 6,
max: 20,
},
usernickname: {
type: String,
required: true,
min: 1,
max: 30,
},
profilePicture: {
type: String,
default: "",
},
coverPicture: {
type: String,
default: "",
},
followers: {
type: Array,
default: [],
},
followings: {
type: Array,
default: [],
},
isAdmin: {
type: Boolean,
default: false,
},
},
{ timestamps: true }
);
module.exports = mongoose.model("User", UserSchema);
index.js:
const express = require("express");
const mongoose = require("mongoose");
const connect = require("mongoose").connect
const dotenv = require("dotenv");
const helmet = require("helmet");
const morgan = require("morgan");
const userRouter = require('./routes/users')
const authRouter = require('./routes/auth')
dotenv.config();
mongoose.connect(
process.env.REACT_APP_MONGO_URL,
{ useNewUrlParser: true,useUnifiedTopology: true },
() => {
console.log("mongodb connected");
}
);
const app = express();
app.listen(3838, () => {
console.log("Backend server is running!");
});
app.use("/api/auth", authRouter)
//middleware
app.use(express.json());
app.use(helmet());
app.use(morgan("common"));
You are not returning anything as a response if error happens. So, you probably had some error, and your server did not return anything to the client, resulting in buffering timed out .
You should return a response in /register
endpoint in case of an error:
authRouter.get("/register", async (req, res) => {
try {
const user = await new User({
username: "yessilyurt",
email:"aaa@aa.com",
usernickname: "Burak Yesilyurt",
password: "123456",
});
await user.save();
return res.send("user registered");
} catch (err) {
console.log(err);
return res.status(400).json({ message: 'Can not register user.', error: err })
}
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.