這不會是最好的parse.com問題,但這是我第一次用javascript寫東西,我無法弄清楚怎麼了。Parse.com beforeDelete函數失敗,「成功/錯誤未被調用」
在我的db我有ParsePost
s,ParseUser
s和ParseComment
s。當我刪除帖子,我想下面要做:
- 任務1:找到誰寫的貼的用戶,和減少自己的「崗位」計數器;
- 任務2:刪除所有與要刪除的帖子相關的
ParseComment
; - 任務3:找到「喜歡」該帖子的用戶,並減少他們的「喜歡」計數器。
我想如下(重命名一些變量,從而有可能是拼寫錯誤):
Parse.Cloud.beforeDelete("ParsePost", function(request,response) {
var post = request.object;
var user = post.get("author");
user.increment("posts",-1);
user.save().then(function(success) {
var query = new Parse.Query("ParseComment");
query.equalTo("post",post);
return query.find();
}).then(function(comments) {
for (var i = 0; i < comments.length; i++) {
var comment = comments[i];
comment.destroy();
}
var query2 = new Parse.Query("ParseUser");
query2.equalTo("postsLiked",post); //"postsLiked" is a relation field
return query2.find();
}).then(function(users) {
for (var i = 0; i < users.length; i++) {
var u = users[i];
u.increment("postsLikedCount",-1);
u.save();
}
response.success();
});
});
但是,刪除失敗消息:Result: success/error was not called
。我不知道爲什麼。
我處理的承諾,據我瞭解(不要太多),應該叫下一個then()
即使有在之前的一個步驟錯誤的方式。換句話說,這三個任務都算不上後果 - 我想的功能:
- 盡力去完成每一項任務;
- 無論任務輸出如何,都會調用success():我想要刪除帖子,即使是,比如
comments.length == 0
。
我應該怎麼做到這一點,爲什麼我的功能沒有達到response.success()
?
作爲一個方面說明,我甚至沒有找到調試的方法 - 我使用parse deploy
,然後查看parse.com中的日誌部分,但我無法設法寫入任何內容。即,console.log()
沒有輸出。
非常感謝。我會隨機回答 - * edit1:*我從來不會對用戶調用get(),所以這不應該是個問題,對吧? *編輯2:*這是真的,我沒有想過。 *身體:*我明白了。調用'response.success()'而不是'response.error()'會不會很糟糕?如果你沒有從beforeDelete調用返回成功,當然,這些對象不會被刪除,但是我希望我的'Post'被刪除,即使有一個未被捕獲的東西在後面。 – natario
我設法自己解決了這個問題,並重寫了我的大部分雲代碼。感謝您澄清解析承諾。 – natario
有一件事我不是100%確定的。在上面的代碼(我的),例如,在'for(var i = 0; i
natario