我正在尝试编写一个Cloud Code函数,它允许我编辑另一个用户的数据,因为我不能在它自己的应用程序中这样做。代码的作用(我应该说,我不知道JS会尝试做)是使用基于两个对象ID的两个单独查询来获取User对象和Group(我创建的类)对象。这是我的代码
Parse.Cloud.define("addInvite", function(request, response) {
Parse.Cloud.useMasterKey();
var userID = request.params.user;
var groupID = request.params.group;
var user;
var group;
var userQuery = new Parse.Query(Parse.User);
userQuery.equalTo("objectId", userID);
return userQuery.first
({
success: function(userRetrieved)
{
user = userRetrieved;
},
error: function(error)
{
response.error(error.message);
}
});
var groupObject = Parse.Object.extend("Group");
var groupQuery = new Parse.Query(groupObject);
groupQuery.equalTo("objectId", groupID);
return groupQuery.first
({
success: function(groupRetrieved)
{
group = groupRetrieved;
},
error: function(error)
{
response.error(error.message);
}
});
var relations = user.relation("invited");
relations.add(group);
user.save();
response.success();
});
每次执行方法时都会收到错误: [错误]:未调用成功/错误(代码:141,版本:1.9.0)
任何人都可以帮忙吗?感谢。
答案 0 :(得分:2)
Parse Cloud中的每个函数都会返回一个Promise。这还包括您运行以检索某些数据的任何查询函数。很明显,在您的代码中,当您执行查询时,您将返回Promise,当您的查询完成时,该查询会突然终止您的云功能。由于您没有在任何成功块中调用except IndexError as eb:
PrintException()
或response.success()
,因此您的云函数会返回而不会设置合适的响应,这是Parse需要的,因此也就是错误。您的代码需要链接所有承诺以确保您的代码正确执行并在最后一步返回成功/错误:
response.error()