I think that I am an idiot. What is happening here?? Why there is no i:0 or i:1, just only the last one? It shows that it loops everything and just after looping it tries to save and it is saving the same last object many time and after that I'll get error 500, duplicate key in DB. Is it even possible to save objects inside the for loop :) in AngularJS?
In console.log:
reasonList.length: 2
rma.js: 284 i: 2
rma.js: 285 defectdescDefectdescId: 2
rma.js: 286 returnreasonId: 1
rma.js: 287 rmaId: 15
code:
savedRma = rmaService.save({}, rma);
savedRma.$promise.then(function (result) {
$scope.rma = result;
console.log('result.rmaID--------->' + result.rmaId);
saveReturnReason(result.rmaId);
}, function (error) {
alert('Error in saving rma' + error);
});
$location.path('/rma-preview/' + $scope.rma.rmaId);
rmaDataService.setRma($scope.rma);
}
}; // ELSE CREATE RMA END
function saveReturnReason(rmaId) {
for (var i = 0; i < $scope.reasonList.length; i++) {
$scope.rmaHasDefectdesc.rmaHasDefectdescPK.defectdescDefectdescId = $scope.reasonList[i].defectdescId;
$scope.rmaHasDefectdesc.rmaHasDefectdescPK.returnreasonId = $scope.reasonList[i].returnreasonReturnreasonId.returnreasonId;
$scope.rmaHasDefectdesc.rmaHasDefectdescPK.rmaId = rmaId;
savedRmaHasDefectdesc = rmaDefectSvc.save({}, $scope.rmaHasDefectdesc);
savedRmaHasDefectdesc.$promise.then(function (response) {
$scope.savedRmaHasDefectdesc = response;
console.log('i: ' + i)
console.log('defectdescDefectdescId:' + response.rmaHasDefectdescPK.defectdescDefectdescId);
console.log('returnreasonId:' + response.rmaHasDefectdescPK.returnreasonId);
console.log('rmaId:' + response.rmaHasDefectdescPK.rmaId);
}, function (error) {
alert('Error in saving reasons' + error);
});
} // For loop ending
};
UPDATE FOR forEach I updated for loop to forEach. Same result, no luck. Still not going to promise.then in first each and then tries to save the last reason multiple times.
function saveReturnReason(rmaId) {
$scope.reasonList.forEach(function(reason){
$scope.rmaHasDefectdesc.rmaHasDefectdescPK.defectdescDefectdescId = reason.defectdescId;
$scope.rmaHasDefectdesc.rmaHasDefectdescPK.returnreasonId = reason.returnreasonReturnreasonId.returnreasonId;
$scope.rmaHasDefectdesc.rmaHasDefectdescPK.rmaId = rmaId;
console.log('rmaId: ' +rmaId+': returnReasonId: ' +reason.returnreasonReturnreasonId.returnreasonId +' defectID: '+reason.defectdescId);
savedRmaHasDefectdesc = rmaDefectSvc.save({}, $scope.rmaHasDefectdesc);
// At the first loop, never comes to .then
savedRmaHasDefectdesc.$promise.then(function (response) {
$scope.savedRmaHasDefectdesc = response;
}, function (error) {
alert('Error in saving reasons' + error.status);
});
});// ForEach ending
};