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

时间:2015-12-14 11:48:56

标签: javascript parse-platform cloud-code

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

由于你有一个指针,你需要使用.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);       
  });
});