Mohamed Abu Basith commited on
Commit
898f6e2
·
1 Parent(s): da83842
Files changed (2) hide show
  1. Database/models/user.js +29 -10
  2. routes/profileUpdate.js +27 -31
Database/models/user.js CHANGED
@@ -66,18 +66,37 @@ const userSchema = new Schema({
66
  type: String
67
  },
68
  addresses: [{
69
- name: String,
70
- mobileNumber: String,
71
- pinCode: String,
72
- address: String,
73
- area: String,
74
- landMark: String,
75
- alterMobileNumber: String,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  _id: { // Add if you want unique IDs for addresses
77
- type: mongoose.Schema.Types.ObjectId,
78
- auto: true
79
  }
80
- }]
81
  }, {
82
  timestamps: true // This adds `createdAt` and `updatedAt` fields
83
  });
 
66
  type: String
67
  },
68
  addresses: [{
69
+ name: {
70
+ type: String,
71
+ required: true
72
+ },
73
+ mobileNumber: {
74
+ type: String,
75
+ required: true
76
+ },
77
+ pinCode: {
78
+ type: String,
79
+ required: true
80
+ },
81
+ address: {
82
+ type: String,
83
+ required: true
84
+ },
85
+ area: {
86
+ type: String,
87
+ required: true
88
+ },
89
+ landMark: {
90
+ type: String
91
+ },
92
+ alterMobileNumber: {
93
+ type: String
94
+ },
95
  _id: { // Add if you want unique IDs for addresses
96
+ type: mongoose.Schema.Types.ObjectId,
97
+ auto: true
98
  }
99
+ }]
100
  }, {
101
  timestamps: true // This adds `createdAt` and `updatedAt` fields
102
  });
routes/profileUpdate.js CHANGED
@@ -8,7 +8,7 @@ const fs = require('fs');
8
  const router = express.Router();
9
  const User = require('../Database/models/user');
10
  const { successResponse, failedResponse } = require("../utils/responseModel");
11
- const { Types } = require('mongoose'); // Import Mongoose Types
12
 
13
 
14
  const storage = multer.diskStorage({
@@ -192,49 +192,45 @@ router.get("/:userId/addresses", asyncHandler(async (req, res) => {
192
  res.status(200).json(successResponse("Success!", user.addresses));
193
  }));
194
 
195
- router.put("/:userId/addresses/:addressId", asyncHandler(async (req, res) => {
 
196
  try {
197
- const addressId = new Types.ObjectId(req.params.addressId); // Convert to ObjectId
198
- console.log("Request Address ID:", addressId);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
 
200
  const updatedUser = await User.findOneAndUpdate(
201
  {
202
- unique_id: req.params.userId,
203
- "addresses._id": addressId // Use the converted ObjectId
204
- },
205
- {
206
- $set: {
207
- "addresses.$": req.body
208
- }
209
  },
 
210
  { new: true, runValidators: true }
211
  );
212
 
213
  if (!updatedUser) {
214
- return res.status(404).json(failedResponse("User or address not found", 404));
215
  }
216
 
217
- console.log("Updated User:", updatedUser);
218
-
219
- // Debug: Log all addresses and their _id values
220
- updatedUser.addresses.forEach((a, index) => {
221
- console.log(`Address ${index}:`, {
222
- _id: a._id,
223
- addressId: addressId,
224
- match: a._id.equals(addressId) // Use .equals() for comparison
225
- });
226
- });
227
-
228
- // Find the updated address by comparing _id as ObjectId
229
  const updatedAddress = updatedUser.addresses.find(a => a._id.equals(addressId));
230
 
231
- if (!updatedAddress) {
232
- console.log("Addresses Array:", updatedUser.addresses); // Log the addresses array
233
- return res.status(404).json(failedResponse("Address not found in the user's addresses", 404));
234
- }
235
-
236
- console.log("Updated Address:", updatedAddress);
237
-
238
  res.status(200).json(successResponse("Address updated successfully", updatedAddress));
239
  } catch (error) {
240
  console.error("Error updating address:", error);
 
8
  const router = express.Router();
9
  const User = require('../Database/models/user');
10
  const { successResponse, failedResponse } = require("../utils/responseModel");
11
+ const mongoose = require('mongoose'); // Import Mongoose Types
12
 
13
 
14
  const storage = multer.diskStorage({
 
192
  res.status(200).json(successResponse("Success!", user.addresses));
193
  }));
194
 
195
+ // Update Adress
196
+ outer.put("/:userId/addresses/:addressId", asyncHandler(async (req, res) => {
197
  try {
198
+ const userId = Number(req.params.userId); // Convert userId to a Number
199
+ const addressId = new mongoose.Types.ObjectId(req.params.addressId); // Convert addressId to ObjectId
200
+
201
+ console.log("Converted Address ID:", addressId);
202
+
203
+ // Check if the address exists first
204
+ const user = await User.findOne({
205
+ unique_id: userId,
206
+ "addresses._id": addressId
207
+ });
208
+
209
+ if (!user) {
210
+ return res.status(404).json(failedResponse("User or address not found", 404));
211
+ }
212
+
213
+ // Update only fields that are provided in req.body
214
+ const updateFields = {};
215
+ Object.keys(req.body).forEach(key => {
216
+ updateFields[`addresses.$.${key}`] = req.body[key];
217
+ });
218
 
219
  const updatedUser = await User.findOneAndUpdate(
220
  {
221
+ unique_id: userId,
222
+ "addresses._id": addressId
 
 
 
 
 
223
  },
224
+ { $set: updateFields },
225
  { new: true, runValidators: true }
226
  );
227
 
228
  if (!updatedUser) {
229
+ return res.status(404).json(failedResponse("Address update failed", 404));
230
  }
231
 
 
 
 
 
 
 
 
 
 
 
 
 
232
  const updatedAddress = updatedUser.addresses.find(a => a._id.equals(addressId));
233
 
 
 
 
 
 
 
 
234
  res.status(200).json(successResponse("Address updated successfully", updatedAddress));
235
  } catch (error) {
236
  console.error("Error updating address:", error);