Search code examples
javascriptparse-platformparse-serverparse-cloud-code

Parse CloudCode sometimes does not work


I want to update a field in the 'NotesDB' that indicates the number of comments on a specific Note. Parse Cloudcode should do this automatically after saving a comment.

In practice it sometimes does and it sometimes doesn't (even with the same user, on the same note). The comment itself is always saved properly.

Is there any way i can improve this code..?

Parse.Cloud.afterSave("CommentsDB", function(request) {

var OriginalNote = request.object.get("OriginalPostId");
var query = new Parse.Query("NoteDB");   
query.get(OriginalNote, {
      success: function(post) {
      post.increment("NumberOfComments");
      post.save();
    },

            error: function(error) {
                console.log("An error occured :(");
            }
        });

Solution

  • As you code stands, it is not possible to see if the post.save() call is failing or not (and if it is, why), maybe try chaining your promises :

    query.get(OriginalNote,{useMasterKey:true}).then (function (post) {
        post.increment("NumberOfComments");
        return post.save(null,{useMasterKey:true});
    }).then (function (savedPost) {
        console.log('post incremented ok to ' + savedPost.get('NumberOfComments'));
    },function (err) {
        //this function will catch any error in the promise chain : query.get() or post.save()
        console.error('An error occured : ' + err.message);
    });