Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

index.ts 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const User = require('../../../models/user');
  2. import dbConnect from '../../../utils/helpers/dbHelpers';
  3. import type { NextApiRequest, NextApiResponse } from 'next';
  4. import { UpdateResponse } from '../../../utils/interface/userInterface';
  5. async function handler(
  6. req: NextApiRequest,
  7. res: NextApiResponse<UpdateResponse>
  8. ) {
  9. const { method } = req;
  10. await dbConnect();
  11. switch (method) {
  12. case 'PATCH': {
  13. const updates = Object.keys(req.body.userData);
  14. const allowedUpdates = [
  15. 'fullName',
  16. 'email',
  17. 'address',
  18. 'address2',
  19. 'city',
  20. 'country',
  21. 'postcode',
  22. ];
  23. const isValidOperation = updates.every((update) =>
  24. allowedUpdates.includes(update)
  25. );
  26. if (!isValidOperation) {
  27. return res.status(400).send({ message: 'Invalid updates!' });
  28. }
  29. try {
  30. const user = await User.findOne({ _id: req.body._id });
  31. updates.forEach((update) => (user[update] = req.body.userData[update]));
  32. await user.save();
  33. res.send({
  34. message: 'User profile updated successfully.',
  35. });
  36. } catch (error) {
  37. if (error instanceof Error)
  38. res.status(400).json({ message: error.message });
  39. else res.status(400).json({ message: 'Unexpected error' + error });
  40. }
  41. break;
  42. }
  43. }
  44. }
  45. export default handler;