解析After_Delete更新计数器

时间:2015-02-14 15:27:11

标签: javascript parse-platform cloud-code

当在某些类上调用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是否指向实际执行提取的有效对象?

1 个答案:

答案 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();
});