router
Fri Jun 07 2024 08:09:01 GMT+0000 (Coordinated Universal Time)
Saved by @sid_balar
var express = require('express'); var router = express.Router(); const multer = require('multer') const fs = require('fs') const storage2 = require('node-persist'); const auth = require('../middleware/auth') var jwt = require('jsonwebtoken'); const path = require('path'); const saveuser = require('../model/user'); const saveUserDetails = require('../model/userDetail'); const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, `${Date.now()}_${file.originalname}`) } }) const upload = multer( { storage: storage } ) /* GET users listing. */ router.get('/', function(req, res, next) { res.send('respond with a resource'); }); const saveUserData = async (req,res,next) =>{ try { const saveUser = new saveuser({ email: req.body.email, password: req.body.password }) const users = await saveUser.save(); const userID = users._id; const saveDetila = new saveUserDetails({ user_id: userID, name: req.body.name, phone: req.body.phone, country: req.body.country, file: req.file.filename, }) const detils = await saveDetila.save(); res.status(200).json({ status: 'success', users, detils }) } catch (error) { if (req.file && req.file.path && fs.existsSync(req.file.path)) { fs.unlinkSync(req.file.path); } if(error.name === 'ValidationError'){ if (req.file && req.file.path && fs.existsSync(req.file.path)) { fs.unlinkSync(req.file.path); } const validationError = {}; for(const key in error.errors){ validationError[key] = error.errors[key].message; } return res.status(400).json({ error: validationError }) } res.send(500).json({ massage: 'Server Error' }) } } const checkUser = async (req,res,next) => { try { const {email,password} = req.body const findUser = await saveuser.find({email: email}); if(!findUser){ res.send(201).json({ status: 'error', message: 'Email is not Found' }) } if(findUser){ const passwordCheck = await saveuser.find({password: password}); if(!passwordCheck){ res.send(201).json({ status: 'error', message: 'Wrong Password' }) } else { const storeData = findUser.toString(); await storage2.init(''); await storage2.setItem(storeData,'user'); var token = jwt.sign({ _id: findUser[0]._id }, 'shhhhh'); res.status(200).json({ status: 'success', message: 'login Successfully', token }) } } } catch (error) { if(error) throw error; res.send(500).json({ massage: 'Server Error' }) } } const userList = async (req,res,next) => { try { const query = {}; if(req.query.email){ query.email = { $regex: new RegExp(req.query.email,'i')}; } if(req.query.name){ query.name = {$regex: new RegExp(req.query.name,'i')}; } if(req.query.phone){ query.phone = req.query.phone } if(req.query.country){ req.query = {$regex: new RegExp(req.query.country,'i')}; } const page = parseInt(req.query.page) || 1; const pageSize = parseInt(req.query.pageSize) || 5; const Listuser = await saveUserDetails.aggregate([ { $match: query }, { $lookup: { from: "users", localField: "user_id", foreignField: "_id", as: "user", }, }, { $skip: (page - 1) * pageSize, }, { $limit: pageSize } ]) res.status(200).json({ status: 'success', Listuser }); } catch (error) { res.send(500).json({ massage: 'Server Error' }) } } const updateUser = async (req, res, next) => { try { const userid = req.params.id; const getuserDetila = await saveUserDetails.findOne({ user_id: userid }); if (!getuserDetila) { return res.status(400).json({ status: 'error', message: 'User not found' }); } if (getuserDetila.file) { const filePath = path.join('uploads/', getuserDetila.file); if (fs.existsSync(filePath)) { fs.unlinkSync(filePath); } } const userData = await saveuser.findByIdAndUpdate( userid, { email: req.body.email, password: req.body.password }, { new: true } ); const userDetails = await saveUserDetails.findOneAndUpdate( { user_id: userid }, { name: req.body.name, phone: req.body.phone, country: req.body.country, file: req.file.filename, }, { new: true } ); res.status(200).json({ status: 'Success', userData, userDetails, }); } catch (error) { if (req.file && req.file.path && fs.existsSync(req.file.path)) { fs.unlinkSync(req.file.path); } console.error(error); // Log the actual error for debugging res.status(500).json({ status: 'error', message: error.message // Send the actual error message }); } }; const deleteUser = async (req, res, next) => { try { const userid = req.params.id; const getUserDetails = await saveUserDetails.findOne({ user_id: userid }); if (!getUserDetails) { return res.status(400).json({ status: 'error', message: 'User not found' }); } if (getUserDetails.file) { const filePath = path.join('uploads/', getUserDetails.file); if (fs.existsSync(filePath)) { fs.unlinkSync(filePath); } } await saveuser.findByIdAndDelete(userid); await saveUserDetails.findOneAndDelete({ user_id: userid }); res.status(200).json({ status: 'Success', message: 'User deleted successfully' }); } catch (error) { console.error(error); // Log the actual error for debugging res.status(500).json({ status: 'error', message: error.message // Send the actual error message }); } }; router.post('/createUser', upload.single('file'),saveUserData) router.post('/loginUser', checkUser) router.get('/getData', auth,userList) router.put('/updateData/:id', auth,upload.single('file'),updateUser) module.exports = router;
Comments