Hello sir,
Im getting this error when Im trying to delete product Im using identical code as yours please I need you help
“`
DELETE http://localhost:3000/api/products/640a1a74be564697ae01321f 500 (Internal Server Error)
“`
Bassir Changed status to publish April 7, 2023
Please send screenshot of error in backend terminal log to take a look. include terminal logs and chrome dev tools console logs.
Bassir Changed status to publish April 7, 2023


This is resolved sir but I’m facing another issue

resolved sir

I have resolved this issue sir but I am facing another issue could you have a look onto it please?
Hello Sir,
Thank you for replying I have fixed that issue but I have another issue I’m getting.
Error:
“`
Cast to ObjectId failed for value “profile” (type string) at path “_id” for model “User”
“`
My codes:
userRoutes.js
“`
import express from ‘express’;
import bcrypt from ‘bcryptjs’;
import User from ‘../models/userModel.js’;
import { generateToken, isAuth, isAdmin } from ‘../utils.js’;
import expressAsyncHandler from ‘express-async-handler’;
const userRouter = express.Router();
userRouter.get(
‘/’,
isAuth,
isAdmin,
expressAsyncHandler(async (req, res) => {
const users = await User.find({});
res.send(users);
})
);
userRouter.get(
‘/:id’,
isAuth,
isAdmin,
expressAsyncHandler(async (req, res) => {
const user = await User.findById(req.params.id);
if (user) {
res.send(user);
} else {
res.status(404).send({ message: ‘User Not Found’ });
}
})
);
userRouter.put(
‘/:id’,
isAuth,
isAdmin,
expressAsyncHandler(async (req, res) => {
const user = await User.findById(req.params.id);
if (user) {
user.name = req.body.name || user.name;
user.email = req.body.email || user.email;
user.isAdmin = Boolean(req.body.isAdmin);
user.isSeller = Boolean(req.body.isSeller);
const updatedUser = await user.save();
res.send({ message: ‘User Updated Successfully’, user: updatedUser });
} else {
res.status(404).send({ message: ‘User Not Found’ });
}
})
);
userRouter.delete(
‘/:id’,
isAuth,
isAdmin,
expressAsyncHandler(async (req, res) => {
const user = await User.findById(req.params.id);
if (user) {
if (user.email === ‘admin@example.com’) {
res.status(400).send({ message: ‘Can Not Delete Admin User’ });
return;
}
await User.findByIdAndDelete(req.params.id);
res.send({ message: ‘User Deleted’ });
} else {
res.status(404).send({ message: ‘User Not Found’ });
}
})
);
userRouter.post(
‘/signin’,
expressAsyncHandler(async (req, res) => {
const user = await User.findOne({ email: req.body.email });
if (user) {
if (bcrypt.compareSync(req.body.password, user.password)) {
res.send({
_id: user._id,
name: user.name,
email: user.email,
isAdmin: user.isAdmin,
isSeller: user.isSeller,
token: generateToken(user),
});
return;
}
}
res.status(401).send({ message: ‘Invalid Email/Password’ });
})
);
userRouter.post(
‘/signup’,
expressAsyncHandler(async (req, res) => {
// creating new user
const newUser = new User({
name: req.body.name,
email: req.body.email,
password: bcrypt.hashSync(req.body.password),
});
// saving new user in mongodb
const user = await newUser.save();
// returns new user data to the frontend
res.send({
_id: user._id,
name: user.name,
email: user.email,
isAdmin: user.isAdmin,
isSeller: user.isSeller,
token: generateToken(user),
});
})
);
userRouter.put(
‘/profile’,
isAuth,
expressAsyncHandler(async (req, res) => {
const user = await User.findById(req.user._id);
if (user) {
user.name = req.body.name || user.name;
user.email = req.body.email || user.email;
if (req.body.password) {
user.password = bcrypt.hashSync(req.body.password, 8);
}
const updatedUser = await user.save();
res.send({
_id: updatedUser._id,
name: updatedUser.name,
email: updatedUser.email,
isAdmin: updatedUser.isAdmin,
isSeller: updatedUser.isSeller,
token: generateToken(updatedUser),
});
} else {
res.status(404).send({ message: ‘User not found’ });
}
})
);
export default userRouter;
“`
Im getting error when Im trying to modify data in Customer User Profile and this is happening because of this line:
“`
userRouter.put(
‘/:id’,
isAuth,
isAdmin,
expressAsyncHandler(async (req, res) => {
const user = await User.findById(req.params.id);
if (user) {
user.name = req.body.name || user.name;
user.email = req.body.email || user.email;
user.isAdmin = Boolean(req.body.isAdmin);
user.isSeller = Boolean(req.body.isSeller);
const updatedUser = await user.save();
res.send({ message: ‘User Updated Successfully’, user: updatedUser });
} else {
res.status(404).send({ message: ‘User Not Found’ });
}
})
);
“`
So when I comment it I am able to update data for customer users but then Im unable to edit data for isAdmin or isSeller
Please I need you help with this and I’m thanking you for all the support.