parse-platform - Parse 中 afterSave 处理程序中的 "return"有什么意义

标签 parse-platform parse-cloud-code back4app

我对 afterSave 处理程序中 return 关键字的用途感到困惑。据我所知它不会将结果返回给客户端,如果是的话那么它会将结果返回到哪里?下面提供来自 Cloud Code 文档的图片供引用。

enter image description here

最佳答案

在上面的代码示例中,我认为它来自文档,返回确保 post.save() 中的任何错误都会被 catch '捕获' >。

afterSave Hook 中,不会向客户端返回任何错误。将返回的对象不受 afterSave 中发生的任何事情的影响。

afterSave 中的返回影响的是何时关闭与客户端的连接。

如果您返回 promise ,则在 promise 解决之前连接将不会关闭。在您引用的代码的情况下,不会返回 promise ,因此连接将立即关闭,因为 afterSave 函数将在 post.save() promise 解决之前返回。

为了使您突出显示的返回对客户端产生任何影响,您还必须像这样返回查询:

Parse.Cloud.afterSave('Comment', (request) => {
    const query = new Parse.Query('Post');
    return query.get(....)

在这种情况下,客户端将等待帖子的评论计数增加并保存,然后再关闭连接。

继续阅读以了解为什么这很重要以及有关 afterSave 的其他要点以及“返回”的工作原理!

以下是一些注意事项:

  1. 如果您要执行一些“昂贵”或长时间的操作,并且客户端不需要等待,请确保您不返回 Promise,并且 afterSave 函数不是 异步。如果您想更新外部系统或在保存后发送电子邮件,这将是合适的。以下是如何断开连接的示例...
const afterSave = function afterSave(request) {
  const { object } = request;
  got.post('htttps://my.microservice/complete', { object })
    .then(() => console.log('done posting to microservice'))
    .catch(console.error);
};

如果发布到“微服务”时出现错误,客户端永远不会知道,但它会记录到您的控制台。

  • 适合让客户端等待 afterSave 的情况是您需要确保相关操作在客户端取回保存的对象之前完成的情况。例如,假设您需要向角色添加新用户,并且需要在将用户返回到客户端之前完成该操作,否则会因缺乏权限而发生错误。在这种情况下,您需要先保存用户并为其提供一个 ID,然后才能将她添加到角色中。因此,在这种情况下,您可以将用户添加到 afterSave 中的角色,这是一个异步操作,并返回结果 Promise,以便在客户端访问时设置并了解用户权限的状态。获取返回的用户对象。
  • 希望这有帮助!

    关于parse-platform - Parse 中 afterSave 处理程序中的 "return"有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60857706/

    相关文章:

    java - 停止未恢复的 Activity

    rest - 迁移到 Parse-Server 后解析中的 REST-API 问题

    node.js - 解析服务器: Custom endpoint/Express route

    javascript - 无法使用 Cloud Code 找出 Parse Config

    javascript - 解析预定的后台作业

    javascript - 无法序列化未保存的 Parse.Object 错误

    javascript - 如何配置解析服务器应用程序以在 back4app 上运行 Cloud Code

    swift - 解析正在调用的云代码无效函数

    javascript - back4app 云代码无效功能问题

    javascript - 解析JS添加用户和角色