我正在爲我的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.");
}
});
});
(我創建了一個類似的問題,用同樣的錯誤較早但自那時以來已重做的代碼,所以我不想將兩個問題混合起來。)
謝謝,這解決了這個問題,並幫助我理解究竟是什麼導致了問題的原因。 – Gabe
沒問題。我忽略了一個重要部分 - 異步/運行在單獨的線程本身並不是問題,但在另一個線程上運行的函數是一個服務器調用,需要花費時間來完成。您的服務器幾乎立即會響應該響應,因此沒有時間完成異步操作。您將遇到與http請求,提取,查詢,銷燬和調用其他雲功能相同的問題。 –
Parse.Cloud.useMasterKey();已在Parse Server版本2.3.0(2016年12月7日)中棄用。從那個版本開始,它是一個無操作(它什麼都不做)。您現在應該將{useMasterKey:true}可選參數插入到需要在代碼中重寫ACL或CLP的每個方法中。 – alvaro