cloude代码中用户的Parse.com指针查询不适用于Profile类


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来检索该数据和Profile数据。还要确保不要在async.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);       
  });
});

最新更新