Reputation: 1449
I am creating an Ionic app that is using Parse.com as its backend. I want to save an item to an existing Object however if it already exists then I want to Update the item. I have tried using the .save from the documentation however it constantly creates new rows.
I am able to query for the Existing ID using the following:
var ExisitingId = Parse.Object.extend("Exercises");
var query = new Parse.Query(ExisitingId);
query.equalTo("exerciseName", $scope.currentExcercise);
query.find({
success: function(results) {
// alert("Successfully retrieved " + results.length + " scores.");
// Do something with the returned Parse.Object values
for (var i = 0; i < results.length; i++) {
var object = results[i];
// alert(object.id + ' - ' + object.get('exerciseName already Exists'));
var ExisitingIdNumber = object.id;
}
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
And this is my code that is used to create / save rows in the Object Exercises
:
$scope.saveToParse = function(exercise) {
var Exercises = Parse.Object.extend("Exercises");
var exercises = new Exercises();
exercises.set({exerciseName: exercise.ExerciseName,
exerciseID: exercise.ExerciseID,
exerciseDescription: exercise.Description,
sets: exercise.Sets,
reps: exercise.Reps,
resistance: exercise.Resistance,
tempo: exercise.Tempo,
images: $scope.images})
exercises.save(null, {
success: function(exercises) {
// Execute any logic that should take place after the object is saved.
alert('Exercise saved with objectId: ' + exercises.id);
},
error: function(exercises, error) {
// Execute any logic that should take place if the save fails.
// error is a Parse.Error with an error code and message.
alert('Failed to create new object, with error code: ' + error.message);
}
});
}
I would ideally like to combines these two functions to check for existing value and then either create / update automatically.
Regards Simon
Upvotes: 0
Views: 1823
Reputation: 1449
Well this works...
$scope.saveToParse = function(exercise) {
var Exercises = Parse.Object.extend("Exercises");
var exercises = new Exercises();
exercises.id = $scope.ExisitingExerciseID;
console.log($scope.ExisitingExerciseID);
exercises.fetch()
.then(function(){
exercises.set({exerciseName: exercise.ExerciseName,
exerciseID: exercise.ExerciseID,
exerciseDescription: exercise.Description,
sets: exercise.Sets,
reps: exercise.Reps,
resistance: exercise.Resistance,
tempo: exercise.Tempo,
images: $scope.images})
return exercises.save();
$state.go('app.exercises', {clear: true});
})
}
Upvotes: 1