0

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 使用了错误的变量?

提前感谢您的帮助!

4

2 回答 2

0

谢谢回复。我为 1.6.5 版找到了另一个解决方法。我可能还应该提到,我对这段代码的用例是在将新关系添加到特定记录(帖子)时增加计数列(评论计数)。

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

于 2015-10-15T02:24:54.173 回答
0

几周前有这个确切的问题。

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

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

于 2015-10-13T16:21:08.787 回答