Amit
Amit

Reputation: 1919

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);       
    }
    });

Upvotes: 0

Views: 34

Answers (2)

adolfosrs
adolfosrs

Reputation: 9389

Since you have a Pointer you need to use .include to retrieve this data with the Profile data. Also make sure to not call the res.success right after the async .save() call

Your code should look like this.

Parse.Cloud.define("updateProfile", function(req, res){

var query = new Parse.Query(Profile);
query.include("user");
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);       
  });
});

Upvotes: 1

Mo Nazemi
Mo Nazemi

Reputation: 2717

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);       
  });
});

Upvotes: 1

Related Questions