I am using async
/await
but it is not working as expected. The data is being updated before the promise is resolved.
export const update = async (req, res) => {
let lead = Lead.findbyid(id)
let updates = req.body.updates
if (updates.clientDetails.alternateContacts && updates.clientDetails.alternateContacts.length > 0) {
updates.clientDetails.alternateContacts.forEach(async ele => {
if (ele.addedOn) console.log('date exists')
else ele.addedOn = new Date()
if (ele.email) {
console.log('11111111111111111111');
let clientId = await createAutoAccount({ email: ele.email, name:ele.name, contactNumber: ele.phoneNumber })
console.log('22222222222222222222222', clientId);
ele.userId = clientId
}
})
lead.clientDetails.alternateContacts = updates.clientDetails.alternateContacts
}
await lead.save();
}
export const createAutoAccount = async (data) => {
let user = await User.findOne({ email: data.email });
if (user) {
console.log('user found =======================', user._id);
} else {
console.log('new user created ---------------');
const tempObj = {
email: data.email,
password: data.password ? data.password : 'user123',
full_name: data.name ? data.name : null,
contact_number: data.contactNumber && !isNaN(data.contactNumber) ? data.contactNumber : null,
};
user = await User.create(tempObj);
}
return user._id;
}
The order of output is:
11111111111111111111
update lead
user found ======================= 617155c8827ab456041342ad
22222222222222222222222 617155c8827ab456041342ad
what is want is:
11111111111111111111
user found ======================= 617155c8827ab456041342ad
22222222222222222222222 617155c8827ab456041342ad
update lead
Please let me know what needs to be modified to make this work as per expectations.