Create Backend using NODE, EXPRESS, MONGODB
FileSystem
server> -databse
-model
-router
-src
src>
-app.js
-config.env
db>
-conn.js
model>
-userSchema.js
router>
-auth.js
src/app.js
src/config.engconst express = require("express");const app = express();const User = require("../model/userSchema");const authRoute = require("../router/auth");require("../db/conn");const port = process.env.PORT || 8000;app.use(express.json());app.use(authRoute);// middlewareconst middleware = (req, res, next) => {console.log("hello, i'm middleware");next();}app.get("/about", middleware, (req, res) => {res.send("about")})app.get("/contact", (req, res) => {res.send("contact")})app.get("/signin", (req, res) => {res.cookie("Test", "shreyash Kolhe");res.send("this is login page")})app.get("/signup", (req, res) => {res.send("resister")})app.listen(port, () => {console.log(`listening...${port}`);})
DATABASE='mongodb://s510:s510@cluster0-shard-00-01.x SECRET_KEY=LKAJSDFLKJADSLFKJALDJFSLJADLKJADSAModel/userSchema.js
db/conn.jsconst mongoose = require("mongoose");const bcrypt = require('bcryptjs');const jwt = require("jsonwebtoken");// const dotenv = require("dotenv");// dotenv.config({path: './src/config.env'});const userSchema = new mongoose.Schema({name: {type: String,required: true},email: {type: String,required: true},phone: {type: Number,required: true},work: {type: String,required: true},password: {type: String,required: true},cpassword: {type: String,required: true},tokens: [{token: {type: String,required: true}}]})// password hashinguserSchema.pre('save', async function (next) {// console.log("hii... from the outside");if (this.isModified('password')) {// console.log('password decrypt successfully')this.password = await bcrypt.hash(this.password, 12);this.cpassword = await bcrypt.hash(this.cpassword, 12);}next();})// generating tokenuserSchema.methods.generateAuthToken = async function() {try {let newToken = jwt.sign({ _id: this._id }, process.env.SECRET_KEY);this.tokens = this.tokens.concat({ token: newToken });await this.save();return newToken;} catch (e) {console.log(e);}}const User = mongoose.model('USER', userSchema);module.exports = User;
router/auth.jsconst mongoose = require('mongoose');const dotenv = require("dotenv");dotenv.config({path: './src/config.env'});const db = process.env.DATABASE;mongoose.connect(db, {useNewUrlParser: true,// useCreateIndex: true,useUnifiedTopology: true,// useFindAndModify: false}).then(() => {console.log("connection successful")}).catch((err) => {console.log(err)})
const jwt = require("jsonwebtoken");const express = require("express");const router = express.Router();const bcrypt = require('bcryptjs');require("../db/conn");const User = require("../model/userSchema");router.get("/", (req, res) => {res.send("hello router")});// user registrationrouter.post("/register", async (req, res) => {const { name, email, phone, work, password, cpassword } = req.body;if (!name || !email || !phone || !work || !password || !cpassword) {return res.status(422).json({ error: "plz filled the field properly" });}try {const userExist = await User.findOne({ email: email })if (userExist) {return res.status(422).json({error: "email already exist"});}const user = new User({ name, email, phone, work, password, cpassword })const userResister = await user.save();if (userResister) {return res.status(201).json({message: "user registered successfully"});} else {res.status(500).json({ error: "failed to register" })}} catch (err) {console.log(err)}});// user loginrouter.post("/login", async (req, res) => {try {const { email, password } = req.body;if (!email || !password) {return res.status(400).json({ error: "Plz fill the data" });}const userLogin = await User.findOne({ email: email })// console.log(userLogin);if (userLogin) {const isMatch = await bcrypt.compare(password, userLogin.password);const token = await userLogin.generateAuthToken();console.log(token);res.cookie("jwtoken", token, {expires: new Date(Date.now()+25892000000),httpOnly: true});if (!isMatch) {res.json({ error: "invalid email" })} else {res.json({ message: "User signin Successfully" })}} else {res.status(400).json({ error: "Invalid creadients" });}} catch (err) {console.log(err)}})module.exports = router;
Post a Comment