auth.js file
const router = require("express").Router();
const User = require("../models/User");
//REGISTER
router.post("/register", async (req,res) => {
const newUser = new User({
username: req.body.username,
email: req.body.email,
password: req.body.password,
});
try{
const savedUser = await newUser.save();
res.status(201).json(savedUser);
} catch(err) {
res.status(500).json(err);
}
});
module.exports = router;
index.js file
const express = require("express");
const { default: mongoose } = require("mongoose");
const dotenv = require("dotenv");
const userRoute = require("./routes/user");
const authRoute = require("./routes/auth");
dotenv.config();
const app = express();
mongoose
.connect(
process.env.MONGO_URL //hidden connection key
)
.then(() => console.log("DB Connection Successful!") )
.catch((err) => {
console.log(err)
});
app.use(express.json()); //to read json
post req from postman
app.use("/api/users", userRoute); //whenever we
go to api/users, app will use userRoute which is
imported from routes/user.js
app.use("/api/auth", authRoute);
app.listen(5000, () => {
console.log("Backend server is running!");
});
POSTMAN entry:
{ "username": "mamik", "email": "[email protected]", "password":"12345" }
POSTMAN error:
{ "index": 0, "code": 11000, "keyPattern": { "username": 1 }, "keyValue": { "username": "mamik" } }
It is showing 500 Internal server error. I am not sure if it is a database connection problem or some typo.
EDIT:
User:
const mongoose = require("mongoose");
const UserSchema = new mongoose.Schema({
username: {type: String, required: true, unique: true},
email: {type: String, required: true, unique: true},
password: {type: String, required: true},
isAdmin: { type: Boolean, default: false, },
}, {timestamps: true} );
module.exports = mongoose.model("User", UserSchema);