Search code examples
javascriptparse-platformparse-cloud-code

Parse.com pointer query with user in cloude code is not working for Profile class


Parse.Cloud.define("updateProfile", function(req, res){
    var Profile = Parse.Object.extend("Profile");
    var query = new Parse.Query(Profile);
    query.equalTo("user", req.user);
    query.find({
      success: function(profile) {
        console.log(profile[0]);

        profile[0].set("fullName", req.params.fullName);
        profile.save(); 
        res.success("Save successfully");   
      },
      error: function(error) {
        console.log('updateProfile:Error:  ' + error.message);
        res.error(error.message);       
    }
    });

Solution

  • This is because you need to wait for the asynchronous save operation to finish before calling res.success function:

    Parse.Cloud.define("updateProfile", function(req, res){
    
    var query = new Parse.Query(Profile);
    query.equalTo("user", req.user);
    query.find().then( function(profile) {
        console.log(profile[0]);
    
        var myProfile = new Parse.Object("Profile");
        myProfile.id =  profile[0].id;
        myProfile.set("fullName", req.params.fullName);
        return myProfile.save();
    
      }).then(function() {
        res.success("Save successfully");
      }, function(error) {
        console.log('updateProfile:Error:  ' + error.message);
        res.error(error.message);       
      });
    });