Database Connection:
const mysql = require("mysql");
require("dotenv").config();
let con;
function connectDB() {
try {
con = mysql.createConnection({
host: process.env.DB_HOST || "localhost",
user: process.env.DB_USER || "root",
password: process.env.DB_PASSWORD || "",
database: process.env.DB_NAME || "node_app",
});
con.connect((err) => {
if (err) {
console.error("MySQL Connection Error:", err);
process.exit(1);
}
console.log("MySQL Connected Successfully");
});
} catch (error) {
console.error("MySQL Connection Error:", error);
process.exit(1);
}
}
module.exports = connectDB;
module.exports.getConnection = () => con;
Routes:
const express = require("express");
const router = express.Router();
const { userSignup } = require("../controllers/authController");
// const {
// listUsers,
// createUser,
// updateUser,
// deleteUser,
// } = require("../controllers/userController");
router.post("/signup", userSignup);
// router.post("/signup", signup);
// router.post("/login", login);
// router.get("/userslist", listUsers);
// router.post("/users", createUser);
// router.put("/users/:id", updateUser);
// router.delete("/users/:id", deleteUser);
module.exports = router;
Controller:
const bcrypt = require("bcryptjs");
const User = require("../models/User");
exports.userSignup = async(req,res)=>{
try {
const { name,email,phone,password } = req.body;
if(!name || !email || !phone || !password) {
return res.status(400).json({
message:"Please provide all the required fields",
});
}
User.findByEmail(email, async(err, result) => {
if(err) {
return res.status(500).json({
message:"Database Error",
error: err.message
});
}
if(result.length > 0) {
return res.status(400).json({
message:"User already exists",
});
}
// Hash password
const hashedPassword = await bcrypt.hash(password, 10);
// Create user
User.create({name, email, phone, password: hashedPassword}, (err, result) => {
if(err) {
return res.status(500).json({
message:"Database Error",
error: err.message
});
}
res.status(201).json({
message:"User registered successfully",
user: {
id: result.insertId,
name,
email,
phone
}
});
});
});
}
catch (error) {
console.error("Error in userSignup:", error);
res.status(500).json({ message: "Internal Server Error" });
}
};
Model:
const getConnection = require("../config/db").getConnection;
const User = {
findByEmail: (email, callback) => {
const con = getConnection();
const query = "SELECT * FROM users WHERE email = ?";
con.query(query, [email], callback);
},
create: (userData, callback) => {
const con = getConnection();
const query = "INSERT INTO users (name, email, phone, password) VALUES (?, ?, ?, ?)";
const { name, email, phone, password } = userData;
con.query(query, [name, email, phone, password], callback);
}
};
module.exports = User;