当在某些类上调用after_delete时,我使用Parse云代码更新用户的某些计数器。用户具有订阅,跟随者和跟随者的计数器,这些计数器在before_save中用于订阅递增,并在after_delete中跟随和递减用于相同的类。
我遇到的问题是删除用户的时间。 after_delete函数销毁所有相关的订阅/跟随,但这会触发对(已删除的)用户的更新,通过before_delete进行订阅/跟随。这总是导致before_delete出错。
也许我在概念上混淆了实现这一目标的最佳方法,但我无法弄清楚如何在follow_delete中正确设置以下代码:
var fromUserPointer = follow.get("fromUser");
var toUserPointer = follow.get("toUser");
fromUserPointer.fetch().then( function(fromUser){
// update following counter
// if from user is already deleted, none of the rest of the promise chain is executed
}.then( function (fromUser){
return toUserPointer.fetch();
}.then( function(toUser){
// update followers count
}
有没有办法确定fromUserPointer和toUserPointer是否指向实际执行提取的有效对象?
答案 0 :(得分:1)
找不到用户不是错误,但是由于没有处理fetch中丢失的对象案例,它被隐式地视为错误。
因此...
fromUserPointer.fetch().then(f(result) {
// good stuff
}).then(f(result) {
// good stuff
}).then(f(result) {
// good stuff
}, f(error) {
// this is good stuff too, if there's no mode of failure
// above that would cause you to want NOT to delete, then...
response.success();
});