如果我需要 mysql 视图和 nextJS 中的存储过程,prisma 有什么好处

2024-04-02

我开始学习 prisma 来替换我的 nextJS 应用程序中的 nodejs 后端。

似乎 prisma 不适用于在我的 mysql 数据库中创建的视图和存储过程。

如果我不能只使用视图和存储过程,那么切换到 prisma 是否还有意义,这允许我在数据库中创建一个只能访问这两个而不能访问其他内容的用户。

任何 prisma 专业人士都可以证实或否认我的想法

Thx


虽然这两个功能都不是directly目前 Prisma 支持,存在解决方法,可以将两者与 Prisma 一起使用。对于这两种情况,您都需要直接在 SQL 中执行一些操作。

存储过程

您可以使用$executeRaw and $queryRaw命令通过 Prisma 执行原始 SQL 查询。您可以使用它来执行您创建的过程。例如,如果您有一个名为foobar你可以按如下方式执行它:

  const rawSQL = `call foobar`;
  const result = await prisma.$executeRaw(rawSQL);

你也可以使用$executeRaw to generate存储过程或使用您选择的工具/CLI。

查看原始数据库访问文章 https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw欲了解更多信息$executeRaw and $queryRaw,以及两者之间的区别。

MySQL视图

存在通过 Prisma 使用视图的工作流程。工作流程是这样的:

  1. 直接使用 SQL 创建视图。
  2. 内省数据库以更新您的 Prisma 架构。
  3. Manually将您的视图模型添加到 Prisma 架构中。
  4. 生成 Prisma 客户端并使用为视图创建的实体类来运行查询。

您可以找到有关的详细指南如何在 MySQL 中使用 SQL 视图 https://www.prisma.io/docs/guides/database/advanced-database-tasks/sql-views-mysql以及讨论和当前的限制。

建议

对于这两个功能,我强烈建议首先尝试你的用例在生产应用程序中采用 Prisma 之前。例如,过去用户在运行以下程序时遇到一些困难:将数据返回给客户端 https://github.com/prisma/prisma/issues/2208(不过现在应该修复这个问题)。

此外,如果您遇到任何问题或错误,请随时联系创建一个问题 https://github.com/prisma/prisma/issues/new/choose在 Prisma github 存储库上。我们非常积极,将尽力帮助解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我需要 mysql 视图和 nextJS 中的存储过程,prisma 有什么好处 的相关文章

随机推荐