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() 中返回的主要内容,如果未能解决你的问题,请参考以下文章
KeyError:“未在索引中找到”-创建的虚拟变量未在索引中找到
ReferenceError:localStorage 未在 Object 中定义