有誰知道如何從beforeSave函數返回一個錯誤。例如,如果我的beforeSave功能如下:從Parse.Cloud.beforeSave返回錯誤消息到Unity
Parse.Cloud.beforeSave("UserData", function(request, response) {
var currentSaveVersion = request.object.get("SaveVersion");
var query = new Parse.Query("UserData");
query.equalTo("Username", request.object.get("Username"));
query.find({
success: function(results) {
var lastSaveVersion = -1000;
for (var i = 0; i < results.length; ++i) {
lastSaveVersion = results[i].get("SaveVersion");
}
if(currentSaveVersion == (lastSaveVersion + 1)) {
console.log("UserData BeforeSave success");
response.success({ "success": "Successful save" });
} else {
var errorMessage = "UserData BeforeSave SaveVersion Mismatch";
console.log(errorMessage);
//we need to respond with success to unity, but examine the return value for the error
response.success({ "code": "SaveMismatch", "message": errorMessage });
}
},
error: function(user,error) {
var errorMessage = "UserData BeforeSave Could not look up lastSaveVersion";
console.log(errorMessage);
response.error(errorMessage);
if (error.code >= 200 && error.code < 300) {
// Unity Hack
response.success({ "code": error.code, "message": error.message });
} else {
response.error({ "code": error.code, "message": error.message });
}
}
});
});
不幸的是團結認爲它是成功的,但因爲System.Threading.Task類沒有被提到的財產歸還我不能得到的返回值回在相關的帖子here。
這裏是我想用它來看看,有可能是在response.success消息中發送一個錯誤統一側面雲...這裏是無法編譯的例子:
系統。 Threading.Tasks.Task task = myUserData.SaveAsync();
while (!task.IsCompleted) yield return null;
if (task.IsCanceled){
// the save was cancelled.
Debug.Log ("ParseManager.cs saveUserData, task cancelled");
} else if (task.IsFaulted) {
// The login failed. Check task.Exception to see why.
Debug.Log ("ParseManager.cs saveUserData, task exception: ");
debugLogException(task);
} else {
// the object was saved successfully.
Debug.Log ("ParseManager.cs saveUserData, save successful ");
Debug.Log ("Task result: " + task.Result);
newUserSaveNeeded = false;
}
請注意,System.Threading.Tasks.Task沒有Result屬性。 SaveAsync返回的正確C#類型是什麼,可以讓我看到結果?
或者我在談論這一切都是錯誤的?