next.js - 如果我需要 nextJS 中的 mysql 视图和存储过程,prisma 有什么好处
问题描述
我开始学习 prisma 以在我的 nextJS 应用程序中替换我的 nodejs 后端。
似乎 prisma 不适用于在我的 mysql 数据库中创建的视图和存储过程。
如果我不能只使用视图和存储过程,那么切换到 prisma 是否有意义,这允许我在数据库中创建一个只能访问这两个而不能访问其他内容的用户。
任何可以确认或否认我的想法的棱镜专业人士
谢谢
解决方案
虽然目前 Prisma 不直接支持这两种功能,但存在一些变通方法,可以将这两种功能与 Prisma 一起使用。对于这两种情况,您都需要直接在 SQL 中执行一些操作。
存储过程
您可以使用$executeRaw
and$queryRaw
命令通过 Prisma 执行原始 SQL 查询。您可以使用它来执行您创建的过程。例如,如果您调用了一个存储过程,foobar
您可以按如下方式执行它:
const rawSQL = `call foobar`;
const result = await prisma.$executeRaw(rawSQL);
您还可以使用生成$executeRaw
存储过程或使用您选择的工具/CLI。
查看原始数据库访问文章$executeRaw
以获取有关和的更多信息 $queryRaw
,以及两者之间的区别。
MySQL 视图
存在通过 Prisma 使用视图的工作流。工作流程是这样的:
- 直接使用 SQL 创建视图。
- 内省数据库以更新您的 Prisma Schema。
- 手动将视图模型添加到 Prisma Schema。
- 生成 Prisma 客户端并使用为视图创建的实体类来运行查询。
您可以找到有关如何在 MySQL 中使用 SQL 视图以及讨论和当前限制的深入指南。
建议
对于这两个功能,我强烈建议在生产应用程序中采用 Prisma 之前先试用您的用例。例如,过去用户在运行将数据返回给客户端的程序时会遇到一些困难(不过现在应该解决这个问题)。
此外,如果您遇到任何问题或错误,请始终在 Prisma github repo 上创建问题。我们非常活跃,将尽最大努力帮助解决问题。
推荐阅读
- javascript - 我正在尝试根据按钮值从 oracle 中提取一个值
- javascript - JavaScript SpeechSynthesisUtterance 正确说出数字
- python - 无法使用 matplotlib.pyplot 制作饼图或条形图
- php - Laravel 自动注入是否仅用于控制器功能?
- java - Spring通用存储库自动装配失败
- maven - 任何人都可以为 xmlparserv2.jar 提供 Maven 依赖项吗
- python - Gogs 钩子的秘密(无法上 python3)
- java - 如何使用 Java 中的 SSL 套接字确认握手已完成?
- python - TypeError:下一个不支持的可调用(
) - java - 有没有办法了解 spark 如何加载类路径以及以何种顺序?