beforeDelete函数失败,提示“成功/未调用错误”
Parse.com beforeDelete function failing with "success/error was not called"
这不是最好的parse.com问题,但这是我第一次用javascript写东西,我不知道哪里出错了。
在我的db中,我有ParsePost
s, ParseUser
s和ParseComment
s。当我删除一个帖子时,我希望完成以下操作:
- 任务1:找到写帖子的用户,并减少他的"posts"计数器;
- 任务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()
没有输出。
你的一个承诺抛出了一个错误,你没有任何。then()来捕获这个错误。then()要么接受1个或2个参数,这两个都是函数。如果只有1,则取promise的解析值。如果有2个,第二个取承诺的被拒绝值。你的一个承诺被拒绝了,但这个承诺从来没有被抓住过。将此添加到您的链的末尾:
.then( function(){},
function(error)
{
response.error("There was an error: " + error.message);
}
);
被拒绝的承诺跳过承诺链中任何不包含错误处理程序的链接,所以在最后有这个链接将捕获来自早期链接的任何错误。即使你调用了response.success()而没有返回promise,下一个链的success函数也会被调用。你不会向变量传递任何东西,所以它将是null/undefined
编辑-看看你的代码,我打赌这将是一个很早就出现的问题。你从来没有获取过用户,所以现在它只是一个空对象,只有一个对象id。
Edit2 -同样,query.find()只返回前1000个结果。如果你想对每个对象做一些事情,你应该使用query.each()。
- JavaScriptajax请求servlet调用错误回调函数
- 在firefox中,使用jquery ajax不会调用错误和完整回调
- AJAX rest调用错误”;意外的令牌<&”;
- 非法调用错误 jquery
- 如何修复chrome扩展内联JavaScript调用错误
- 调用module.exports上的函数时发生CommonJS非法调用错误
- JavaScript私有函数调用错误
- AngularJS在使用method:POST时$resource调用错误的API URL
- xwiki REST ajax 调用错误
- 特威利奥:首次通话成功;第二个和后续调用错误
- 在未实现接口 XMLHttpRequest 的对象上调用错误“open”
- 未捕获的类型错误:从 ajax 发送数据时出现非法调用错误
- Ajax调用错误的方法
- DWR 在 Javascript 中调用错误
- 如何使用 c# MVC4 在 $.ajax 中调用错误函数
- 仅在某些浏览器上调用错误
- Amazon AWS listObjects 调用错误
- ajax表单提交但调用错误函数
- AngularJS REST调用错误
- console.log传入函数时发生非法调用错误