解析云代码保存不执行。
Parse Cloud Code Save Not Performing.
我正在为我的 IOS 应用程序编写一段云代码 (Parse),发现每当我尝试保存更新的对象时它都不起作用。如果我删除保存功能,代码会工作并打印出成功响应,但如果我保留它,我会收到错误消息:
Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
我已经尝试了很多解决方案,不管它们是什么,如果保存函数在代码中,上面的错误消息仍然会从 X-Code 调试器中打印出来。 (如果不是,则打印成功响应)
这是代码:
Parse.Cloud.define("removeFriend", function(request, response) {
Parse.Cloud.useMasterKey();
var userObjId = request.params.userObjId;
var currentUser = request.params.currentUser;
var query = new Parse.Query(Parse.User);
query.equalTo("objectId", userObjId);
//query.include('Friends');
query.find({
success: function(results){
var friendsArray = (results[0].get("Friends"));
var newFriends = friendsArray.filter(function(x) {return x != currentUser});
results[0].set("Friends", newFriends);
results[0].save();
response.success("THIS IS RESULT" + results[0].get("Friends"));
},
error: function(){
response.error("The user was not successfully removed.");
}
});
});
(我之前创建了一个类似的问题,但出现了同样的错误,但从那以后我重做了代码,所以我不想把这两个问题混在一起。)
保存是异步的,这意味着它们发生在一个单独的线程中。您在调用 save()
后立即返回 response.success()
,因此在函数终止之前保存永远不会完成。
您有两个选择:向 save()
调用添加成功/错误选项,或使用承诺。我更喜欢后者,当你掌握它们时,它可以使代码更清晰。
results[0].save().then(
function( success ) {
response.success("THIS IS RESULT" + results[0].get("Friends"));
},
function( error ) {
response.error("There was an error trying to save the object: " + JSON.stringify(error));
}
);
我正在为我的 IOS 应用程序编写一段云代码 (Parse),发现每当我尝试保存更新的对象时它都不起作用。如果我删除保存功能,代码会工作并打印出成功响应,但如果我保留它,我会收到错误消息:
Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
我已经尝试了很多解决方案,不管它们是什么,如果保存函数在代码中,上面的错误消息仍然会从 X-Code 调试器中打印出来。 (如果不是,则打印成功响应)
这是代码:
Parse.Cloud.define("removeFriend", function(request, response) {
Parse.Cloud.useMasterKey();
var userObjId = request.params.userObjId;
var currentUser = request.params.currentUser;
var query = new Parse.Query(Parse.User);
query.equalTo("objectId", userObjId);
//query.include('Friends');
query.find({
success: function(results){
var friendsArray = (results[0].get("Friends"));
var newFriends = friendsArray.filter(function(x) {return x != currentUser});
results[0].set("Friends", newFriends);
results[0].save();
response.success("THIS IS RESULT" + results[0].get("Friends"));
},
error: function(){
response.error("The user was not successfully removed.");
}
});
});
(我之前创建了一个类似的问题,但出现了同样的错误,但从那以后我重做了代码,所以我不想把这两个问题混在一起。)
保存是异步的,这意味着它们发生在一个单独的线程中。您在调用 save()
后立即返回 response.success()
,因此在函数终止之前保存永远不会完成。
您有两个选择:向 save()
调用添加成功/错误选项,或使用承诺。我更喜欢后者,当你掌握它们时,它可以使代码更清晰。
results[0].save().then(
function( success ) {
response.success("THIS IS RESULT" + results[0].get("Friends"));
},
function( error ) {
response.error("There was an error trying to save the object: " + JSON.stringify(error));
}
);