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

Posted

技术标签:

【中文标题】request.object.id 未在 Cloud Code 中的 afterSave() 中返回【英文标题】:request.object.id not returning in afterSave() in Cloud Code 【发布时间】:2015-10-08 21:46:30 【问题描述】:

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

非常感谢您的任何帮助!

【问题讨论】:

【参考方案1】:

几周前遇到过这个问题。

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于request.object.id 未在 Cloud Code 中的 afterSave() 中返回的主要内容,如果未能解决你的问题,请参考以下文章

sql server 查看表的死锁和Kill 死锁进程

KeyError:“未在索引中找到”-创建的虚拟变量未在索引中找到

ReferenceError:localStorage 未在 Object 中定义

ReferenceError 'model' 未在 mongoose 中定义

UIWebView 未在 ios 中加载

AssetImage 未在颤振应用程序中显示图像