i have a branch management system in my application where some approved requests show the processor's name (like "usernme") while others show "Legacy".
The issue:
Logs always show
processedBy,processedByName,processedByEmailBranches are created successfully for all requests
❌ But MongoDB is missing these fields for some requests
❓ Why does it work for some users but not others?
1. Mongoose Schema Definition
The fields ARE defined in the schema:
processedBy: { type: String },
processedByName: { type: String },
processedByEmail: { type: String },
processedAt: { type: Date },
2. Approval Route - Setting Values
After successful branch creation:
// Get user info const userId = session.user?.id || session.user?.email; const userName = session.user?.name || 'Unknown User'; const userEmail = session.user?.email || ''; // Set fields in memory branchRequest.requestStatus = 'APPROVED'; branchRequest.processedBy = userId; branchRequest.processedByName = userName; branchRequest.processedByEmail = userEmail; branchRequest.processedAt = new Date(); branchRequest.approvedBy = userId; branchRequest.approvedAt = new Date(); // Mark as modified branchRequest.markModified('processedBy'); branchRequest.markModified('processedByName'); branchRequest.markModified('processedByEmail'); branchRequest.markModified('processedAt'); // Save to database try { const savedRequest = await branchRequest.save(); logger.info('Branch creation request approved successfully', { id: savedRequest._id, processedBy: savedRequest.processedBy, // ✅ Shows in logs processedByName: savedRequest.processedByName, // ✅ Shows in logs processedByEmail: savedRequest.processedByEmail // ✅ Shows in logs }); } catch (saveError) { logger.error('Error saving processed by information', saveError); return NextResponse.json( { success: false, message: 'Branch created but failed to save approval information' }, { status: 500 } ); } return NextResponse.json( { success: true, message: 'approved', data: branchRequest }, // ← Returns in-memory object { status: 200 } );3. Display Logic - Shows "Legacy"
{request.processedBy || request.approverEmail ? ( {request.processedByName || request.approverEmail} ) : request.requestStatus !== 'PENDING' ? ( Legacy // ← Shows this ) : ( - )}{request.processedBy || request.approverEmail ? ( {request.processedByName || request.approverEmail} ) : request.requestStatus !== 'PENDING' ? ( Legacy // ← Shows this ) : ( - )}4. MongoDB Connection
let cachedClient: MongoClient | null = null; let cachedDb: Db | null = null; export async function connectToDatabase() { if (cachedClient && cachedDb) { return { client: cachedClient, db: cachedDb }; } try { const client = await MongoClient.connect(MONGODB_URI); const db = client.db(DB_NAME); cachedClient = client; cachedDb = db; return { client, db }; } catch (error) { logger.error('Failed to connect to MongoDB', error); throw new Error('Database connection failed'); } }Does anyone have idea why this is intermediately happening. i am confused..