afterDelete 在数据管理平台删除时没有触发

代码如下,本地调试是没哟任何问题的。我也搜索了你们的文档和 Google,没有发现有价值的答案

// 删除 User 的时候更新 RewardUserMap
AV.Cloud.afterDelete('WXUser', function(request) {
    console.log("删除 User 之后更新 RewardUserMap")
    let targetId = request.object.get('objectId')
    console.log("删除 User 之后更新 RewardUserMap " + targetId)
    const userQuery = new AV.Query('WXUser').equalTo('objectId', targetId)
    new AV.Query('RewardUserMap').matchesQuery('user', userQuery)
    .find().then(result => {
        console.log(result)
        for (let item of result) {
            item.destroy()
        }
    })
});

云引擎的控制台是否有报错?云引擎是否是标准版(否则会休眠)?

没有任何报错。Hook 函数没有调用到。

我的场景是有一个 User 表和 Reward 表,有一个 RewardUserMap 表存储这两个的 Pointer。
这 3 个表分别添加1 条记录,即 UserA、RewardA 和 UserA+RewardA。
当我删除 UserA 或 RewardA 的时候,没有触发对应的 Hook 函数。

Google 之后你们很多年有同样的 Bug

顺便说下,我改为 beforeDelete,其他代码都不变,就可以触发。

你发这个文章有点老了,我们最新的关于这个问题的文档在 https://leancloud.cn/docs/leanengine_faq.html#hash-554201992

很有可能是你的云引擎是体验版(免费版),因为 before 类 Hook 的超时是 15 秒,after 类是 Hook 是 3 秒(可能不够体验版云引擎从休眠中启动),比较符合你说的现象。

我知道那个链接很老。我看的是最新的文档。我的云引擎应该一直都没休眠吧?我一直在用呀 你们确定不是 bug 吗

我们内部会跟进这个问题,先总结下目前的行为:

  1. 在控制台勾选删除数据不会触发 afterDelete hook
  2. 如果通过新版控制台的批量操作功能删除数据,且在操作时未勾选「跳过 hook」(这是默认选项),那么会触发 afterDelete hook

啊,忘了更新进展了。「在控制台勾选删除数据不会触发 afterDelete hook」这个在 6 月中旬已经修复,在控制台勾选删除数据也会触发 afterDelete hook。