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

Max*_*lle 7 next.js prisma

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

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

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

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

谢谢

Tas*_*mam 11

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

存储过程

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

  const rawSQL = `call foobar`;
  const result = await prisma.$executeRaw(rawSQL);
Run Code Online (Sandbox Code Playgroud)

您还可以用来$executeRaw生成存储过程或使用您选择的工具/CLI。

查看原始数据库访问文章,$executeRaw了解有关和 的更多信息 $queryRaw,以及两者之间的区别。

MySQL视图

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

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

您可以找到有关如何在 MySQL 中使用 SQL 视图的深入指南以及讨论和当前限制。

建议

对于这两个功能,我强烈建议在生产应用程序中采用 Prisma 之前先尝试您的用例。例如,过去用户在运行将数据返回给客户端的过程时遇到一些困难(不过现在应该已修复)。

此外,如果您遇到任何问题或错误,请随时在 Prisma github 存储库上创建问题。我们非常积极,将尽力帮助解决问题。