最佳答案
在上面的代码示例中,我认为它来自文档,返回确保 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
的其他要点以及“返回”的工作原理!
以下是一些注意事项:
- 如果您要执行一些“昂贵”或长时间的操作,并且客户端不需要等待,请确保您不返回 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/