I am having Array of Objects i.e users and I am using async.parallel inside async.each. Now, I didn't get back response in async.each. My code is as follows:
exports.addUserByCSV = function (req, res) {
var users = req.body;
async.each(users,
function (user, callback) {
var user = new User({
username: user.email,
password: user.email.split('@')[0],
ipAddress: req.ip,
firstname: user.firstname,
lastname: user.lastname,
email: user.email,
employeeCode: user.employeeCode,
dateOfJoining: user.dateOfJoining,
dateOfAnniversary: user.dateOfAnniversary,
dateOfBirth: user.dateOfBirth,
employeeStatus: user.employeeStatus,
iw: user.iw,
fatherName: user.fatherName,
aliasName: user.aliasName,
aliasEmail: user.aliasEmail,
panNo: user.panNo,
gender: user.gender,
maritalStatus: user.maritalStatus,
biometricId: user.biometricId,
shift: user.shift,
nextApprisalDate: user.nextApprisalDate,
esiNo: user.esiNo,
pfNo: user.pfNo,
bankAccNo: user.bankAccNo,
situtation: user.situtation,
phone: user.phone,
mobile: user.mobile,
fax: user.fax,
website: user.website,
address: user.address,
city: user.city,
state: user.state,
zip: user.zip,
country: user.country
});
userAdd(user, function (err, user) {
console.log(user)
callback(err);
});
},
function (err) {
res.send({ error: err, message: config.msg.SUCCESSFULLY_ADDED, user: 'User create Successfully' });
}
);
function userAdd(user) {
//console.log(user)
user.register(user, function (err, user) {
async.parallel({
leave: function (callback) {
//add some leaves for user
_availLeaves(req.ID, user._id, function (err, leaves) {
callback(err, leaves);
});
},
salary: function (callback) {
//add salary structure for employee
_salaryStructure(req.ID, user._id, function (err, structure) {
callback(err, structure);
});
}
}, function (err, results) {
console.log(results)
if (!err) { return results; }
res.send({ error: err, message: config.msg.SUCCESSFULLY_ADDED, user: 'User create Successfully' });
});
});
}
}
function _salaryStructure(loginId, userId, cb) {
var structure = new Structure({
userId: userId,
addedBy: loginId,
});
structure.save(function (err, structure) {
cb(err, structure);
});
}
function _availLeaves(loginId, userId, cb) {
var leave = new LeaveAvailable({
"userId": userId,
"bl": 0.50,
"fl": 2,
"cl": 1,
"pl": (new Date().getDate() <= 15) ? 0.75 : 0
});
leave.save(function (err, leaves) {
cb(err, 'leavesAdded')
});
}
If I write res.send
in async.parallel
then I got following issue :
Error: Can't set headers after they are sent.
If I write res.send
in async.each
then I didn't get any response.