解析 After_Delete 更新计数器
Parse After_Delete Update Counters
当在某些 类 上调用 after_delete 时,我正在使用 Parse 云代码来更新用户的一些计数器。用户有订阅、关注者和关注的计数器,在 before_save 中递增订阅,在 before_delete 中关注和递减相同的 类。
我 运行 遇到的问题是删除用户时。 after_delete 函数会销毁所有相关的 subscriptions/follows,但这会通过 before_delete 为 subscriptions/follows 触发对(已删除)用户的更新。这总是导致 before_delete 出错。
也许我在概念上混淆了实现此目的的最佳方法,但我无法弄清楚如何正确设置以下代码 before_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 是否指向有效对象而不实际执行提取?
找不到用户不是错误,但由于未处理获取时丢失对象的情况,它被隐含地视为错误。
所以...
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();
});
当在某些 类 上调用 after_delete 时,我正在使用 Parse 云代码来更新用户的一些计数器。用户有订阅、关注者和关注的计数器,在 before_save 中递增订阅,在 before_delete 中关注和递减相同的 类。
我 运行 遇到的问题是删除用户时。 after_delete 函数会销毁所有相关的 subscriptions/follows,但这会通过 before_delete 为 subscriptions/follows 触发对(已删除)用户的更新。这总是导致 before_delete 出错。
也许我在概念上混淆了实现此目的的最佳方法,但我无法弄清楚如何正确设置以下代码 before_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 是否指向有效对象而不实际执行提取?
找不到用户不是错误,但由于未处理获取时丢失对象的情况,它被隐含地视为错误。
所以...
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();
});