request.object.id没有在Cloud Code中的afterSave()中返回

时间:2015-10-08 21:46:31

标签: parse-platform cloud-code after-save



Parse.Cloud.afterSave(function(request) {

var type = request.object.get("type");

  switch (type) {
    case 'inspiration':
      var query = new Parse.Query("Inspiration");
      break;
    case 'event':
      var query = new Parse.Query("Event");
      break;
    case 'idea':
      var query = new Parse.Query("Idea");
      break;
    case 'comment':
      break;
    default:
      return;
  }

  if (query) {
    query.equalTo("shares", request.object.id);
    query.first({
      success: function(result) {
        result.increment("sharesCount");
        result.save();
      },
      error: function(error) {
        throw "Could not save share count: " + error.message;
      }
    });
  }
 });




由于某种原因,request.object.id没有从新创建的记录中返回对象id。我已经彻底测试了这段代码并将其分离到request.object.id变量。我甚至使用预先存在的对象ID成功运行它,它工作正常。我是否使用错误的变量作为对象ID?

感谢先进的任何帮助!

2 个答案:

答案 0 :(得分:0)

几个星期前有这个确切的问题。

原来这是Parse最新的Javascript SDK中的一个错误。请查看您的CloudCode文件夹 - 它应包含global.json文件,您可以在其中指定JavaScript SDK版本。默认情况下,它指出" latest",将其更改为" 1.4.2"并再次上传您的CloudCode文件夹。

如果您的云代码文件夹中缺少global.json文件,请查看this主题,其中我描述了如何手动创建它。

答案 1 :(得分:0)

感谢您的回复。我发现了1.6.5版本的另一项工作。我还应该提一下,我的这个代码的用例是在将新关系添加到特定记录(post)时递增计数列(注释计数)。

我没有在我的关系类(注释)上实现afterSave方法,而是在我的类(Post)上实现了一个beforeSave方法,并使用request.object.dirtyKeys()来获取我修改过的列。从那里我检查我的脏键是否是注释,如果是我增加我的计数列。它实际上运作得很好。