Parse.com 云代码中的用户指针查询不适用于配置文件 class

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

这是因为在调用res.success函数之前需要等待异步save操作完成:

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

由于您有一个 Pointer,因此您需要使用 .include 来检索此数据以及配置文件数据。还要确保在异步 .save() 调用

之后不要立即调用 res.success

您的代码应如下所示。

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