我正在尝试编写一个云代码功能,该功能将允许我编辑另一个用户的数据,因为我无法在应用程序本身中执行此操作。代码的作用(我应该说是尝试做的,因为我不懂 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)
谁能帮忙解决这个问题吗?谢谢。
最佳答案
Parse Cloud 中的每个函数都会返回一个 Promise。这还包括您运行以检索某些数据的任何查询函数。显然,在您的代码中,当您执行查询时,您将返回一个 Promise,当查询完成时,该查询会突然结束您的云函数。由于您没有在任何成功 block 中调用 response.success()
或 response.error()
,因此您的云函数返回时没有设置合适的响应,这会导致解析需要,因此会出现错误。您的代码需要链接所有 promise ,以确保您的代码正确执行并在最后一步中返回成功/错误:
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);
userQuery.first().then(function(userRetrieved) {
user = userRetrieved;
var groupObject = Parse.Object.extend("Group");
var groupQuery = new Parse.Query(groupObject);
groupQuery.equalTo("objectId", groupID);
return groupQuery.first();
}).then( function(groupRetrieved) {
//group = groupRetrieved;
var relations = user.relation("invited");
relations.add(groupRetrieved);
return user.save();
}).then(function() {
response.success();
}, function(error) {
response.error(error.message);
});
});
关于javascript - 解析[错误] : success/error was not called (Code: 141, 版本 : 1. 9.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356993/