Reputation: 1919
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
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
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