Я изначально написал код с обещаниями, но из-за цикла for пришлось использовать async / await.
код работает сейчас, но я не знаю, как выдать ошибку, которая может работать аналогичноотклонить обещание.
let createGroup=(data)=>{
return new Promise((resolve,reject)=>{
if(check.isEmpty(data.groupName)){
reject('GroupId not Valid');
}
else{
let newGroup= new ExpenseModel({
groupId:'G-'+shortid.generate(),
groupName:data.groupName,
contributors:data.contributorObjIds,
timeCreated:time.now().format(),
creator:data.ownerId
})
newGroup.save((err,group)=>{
if(err){
reject(`Group Not Created ${err}`);
}else{
data.groupdata=group;
console.log("group created",data);
resolve(data);
}
})
}
})
}
let updateUserData= async (data)=>{
try{
for(user of data.contributorIds){
const res=await UserModel.findOne({'userId':user});
res.groups.push(data.groupdata._id);
const resSave=await res.save();
let id='GroupCreated'+user;
eventEmitter.emit('getGroup',user);
}
return 1;
}
catch(e){
return e;
}
}
createGroup(data)
.then(updateUserData)
.then((resolve)=>{
let apiResponse = response.generate(false, 'Group created', 200, resolve);
console.log(apiResponse);
})
.catch((err)=>{
let apiResponse = response.generate(true, 'Group not saved', 400, null);
console.log('group creation failed',err);
res.send(apiResponse);
})
здесь, в updateUserData , как проверить наличие ошибок при получении данных из базы данных. так что это, наконец, идет к блоку обещаний. и apiResponse ошибки вызывается.