๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[E-Commerce App with Fullstack] (2) MongoDB Setup & Register API ๋ณธ๋ฌธ
๐ฉ๐ป ๋ฐฑ์๋(Back-End)/Node js
[E-Commerce App with Fullstack] (2) MongoDB Setup & Register API
์ง์ง์ํ์นด 2023. 4. 28. 18:44728x90
๋ฐ์ํ
<๋ณธ ๋ธ๋ก๊ทธ๋ Techinfo YT ์ ์ ํ๋ธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
=> Mern stack Ecommerce App Lets Build And Deploy Mern Stack Project full-stack development
โ๏ธ MongoDB Setup
๐ config/db.js
import mongoose from "mongoose";
import colors from "colors";
const connectDB = async () => {
try {
const conn = await mongoose.connect(process.env.MONGODB_URI);
console.log(
`Connected To Mongodb Database ${conn.connection.host}`.bgMagenta.white
);
} catch (error) {
console.log(`Error in Mongodb ${error}`.bgRed.white);
}
};
export default connectDB;
โ๏ธ auth Model Setup
๐ models/User.js
import mongoose from "mongoose";
const userSchema = new mongoose.Schema(
{
name: {
type: String,
required: true,
trim: true,
},
email: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
phone: {
type: String,
required: true,
},
address: {
type: String,
required: true,
},
role: {
type: Number,
default: 0,
},
},
{
timestamps: true,
}
);
export default mongoose.model("users", userSchema);
โ๏ธ Hashing Password
๐ npm i bcrypt
๐ helpers/authHelper.js
import bcrypt from "bcrypt";
export const haspPassword = async (password) => {
try {
const salt = 10;
const hashedPassword = await bcrypt.hash(password, salt);
return hashedPassword;
} catch (error) {
console.log(error);
}
};
export const comparePassword = async (password, hashedPassword) => {
return bcrypt.compare(password, hashedPassword);
};
๐ controllers/authController.js
import { hashPassword } from "../helpers/authHelper.js";
import User from "../models/User.js";
export const registerController = async (req, res) => {
try {
const { name, email, password, phone, address } = req.body;
// validation
if (!name) {
return res.send({ error: "Name is required!" });
}
if (!email) {
return res.send({ error: "email is required!" });
}
if (!password) {
return res.send({ error: "password is required!" });
}
if (!phone) {
return res.send({ error: "phone is required!" });
}
if (!address) {
return res.send({ error: "address is required!" });
}
// check user
const existingUser = await User.findOne({ email });
// existing user
if (existingUser) {
return res.status(200).send({
success: true,
message: "Already Register please login!",
});
}
// register user
const hashedPassword = await hashPassword(password);
// save
const user = new User({
name,
email,
phone,
address,
password: hashedPassword,
}).save();
res.status(201).send({
success: true,
message: "User Register Successfully",
user,
});
} catch (error) {
console.log(error);
res.status(500).send({
success: false,
message: "Error in Registeration",
error,
});
}
};
๐routes/authRouter.js
import express from "express";
// router object
const router = express.Router();
import { registerController } from "../controllers/authController.js";
// routing
// REGISTER || METHOD POST
router.post("/register", registerController);
export default router;
โ๏ธ Postman ์ผ๋ก DB ๋ค์ด์ค๋ ๊ฑฐ ํ์ธํ๊ธฐ
๐ server.js
import express from "express";
import colors from "colors";
import dotenv from "dotenv";
import morgan from "morgan";
import connectDB from "./config/db.js";
// router
import authRouter from "./routes/authRouter.js";
// configure env
dotenv.config();
// Databse config
connectDB();
// rest object
const app = express();
// middlewares
app.use(express.json());
app.use(morgan("dev"));
// routes
app.use("/api/v1/auth", authRouter);
// rest api
app.get("/", (req, res) => {
res.send("<h>Welcome ecommerce app</h>");
});
// PORT
const PORT = process.env.PORT || 8000;
// run listen
app.listen(PORT, () => {
console.log(
`Server Running on ${process.env.DEV_MODE} http://localhost:${PORT}`.bgCyan
.white
);
});
728x90
๋ฐ์ํ
'๐ฉโ๐ป ๋ฐฑ์๋(Back-End) > Node js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[E-Commerce App with Fullstack] (4) Admin Check (0) | 2023.04.30 |
---|---|
[E-Commerce App with Fullstack] (3) Login API (0) | 2023.04.30 |
[E-Commerce App with Fullstack] (1) ๊ธฐ๋ณธ ํ๊ฒฝ ์ธํ ํ๊ธฐ (0) | 2023.04.28 |
[Express ์น ์๋ฒ ๋ง๋ค๊ธฐ] (3) Router ๊ฐ์ฒด๋ก ๋ผ์ฐํ ๋ถ๋ฆฌํ๊ธฐ (0) | 2023.04.27 |
[Express ์น ์๋ฒ ๋ง๋ค๊ธฐ] (2) ๋ฏธ๋ค์จ์ด ์ข ๋ฅ & multer ์ฌ์ฉํ๊ธฐ (0) | 2023.04.27 |
Comments