提问人:jelhouss 提问时间:11/15/2023 最后编辑:jelhouss 更新时间:11/15/2023 访问量:30
有没有 Prisma 方法可以在订阅者/钩子中运行特定代码,例如“删除后”或类似的东西?
Is there a Prisma way to run specific code inside a subscriber/hook like "after delete" or something like that?
问:
我有一个父板,它有很多列表,每个列表都有很多任务,每个任务可以有很多附件,所以它就像这个板子->列表->任务->附件。
每个附件/文件数据(附件本身)都存储在对象存储服务器中(就我而言,MinIO 可能是 S3 或其他)。
每次我删除单个附件或所有附件时,我也会并行清除我的存储桶,现在我只在从任务中删除附件时运行 MinIO 删除,例如 (删除任务下的所有附件)或(删除特定附件)。DELETE /task/:taskId/attachment
DELETE /attachment/:attachmentId
如果我删除充满任务的列表本身,甚至删除板本身......这意味着我需要在所有这些上下文中执行 MinIO 操作,这真的很糟糕,我不想跟踪清除存储桶所需的每个删除操作。
是否有任何 Prisma-way 可以像订阅者或某种 pubsub 一样工作?将表视为实体(以及存储库模式的东西)的 TypeORM 和 MikroORM 有一个内置的订阅者,您可以使用它来连接每个操作,例如更新或插入或删除任何类型的实体与元数据......
我阅读了 Prisma 文档,它们提供了中间件,但在我写这篇文章时它们现在已经被弃用了,它们提供了另一个称为扩展的 API,这些 API 实际上都没有关注这个特定问题,它们可以帮助您记录发生的事情,或扩展内置 API,例如 或 ,这不是我要找的。此外,还有这个$on功能,而且我不确定它是否适合我正在寻找的东西,因为它似乎对日志记录(仅显示内容)有用,而不是用于执行某些操作。findMany
create
我需要的是一种运行我的 minio 代码的方法,以便在每次通过对文件资源或其任何父级的直接请求删除文件时清除具有给定文件名的存储桶。
我正在使用 Prisma 5.* (5.5.2) 和 Postgres。而且我也在使用 Nest.js,我想这不是 Nest.js 的特定问题,我只是想弄清楚如何以良好的 Prisma 方式处理自动重复操作。
我尝试寻找文档和许多 GitHub 问题,但没有找到任何可能导致某些东西的东西。
P.S. 我正在考虑扩展 Prisma 客户端并扩展所有模态的功能,但我需要一种方法以某种方式检索文件元数据,而像 TypeORM 工作方式这样的订阅者实际上会有所帮助,因为它每次使用直接使用 HTTP 请求或从其任何会影响它的父级操作资源时都会运行。delete
非常感谢帮助!
答: 暂无答案
评论