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?
感谢先进的任何帮助!
答案 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()来获取我修改过的列。从那里我检查我的脏键是否是注释,如果是我增加我的计数列。它实际上运作得很好。