【发布时间】:2021-09-25 15:00:50
【问题描述】:
我开始学习 prisma 以在我的 nextJS 应用程序中替换我的 nodejs 后端。
似乎 prisma 不适用于在我的 mysql 数据库中创建的视图和存储过程。
如果我不能只使用视图和存储过程,那么切换到 prisma 是否还有意义,它允许我在数据库中创建一个只能访问这两个而不能访问其他内容的用户。
任何可以确认或否认我的想法的 prisma 专业人士
谢谢
【问题讨论】:
我开始学习 prisma 以在我的 nextJS 应用程序中替换我的 nodejs 后端。
似乎 prisma 不适用于在我的 mysql 数据库中创建的视图和存储过程。
如果我不能只使用视图和存储过程,那么切换到 prisma 是否还有意义,它允许我在数据库中创建一个只能访问这两个而不能访问其他内容的用户。
任何可以确认或否认我的想法的 prisma 专业人士
谢谢
【问题讨论】:
虽然目前 Prisma 不直接支持这两种功能,但存在可以将这两种功能与 Prisma 一起使用的变通方法。对于这两种情况,您都需要直接在 SQL 中执行一些操作。
您可以使用 $executeRaw 和 $queryRaw 命令通过 Prisma 执行原始 SQL 查询。您可以使用它来执行您创建的过程。例如,如果您有一个名为 foobar 的存储过程,您可以按如下方式执行它:
const rawSQL = `call foobar`;
const result = await prisma.$executeRaw(rawSQL);
您还可以使用$executeRaw 来生成存储过程或使用您选择的工具/CLI。
查看Raw database access article 了解有关$executeRaw 和$queryRaw 的更多信息,以及两者之间的区别。
存在通过 Prisma 使用视图的工作流程。工作流程是这样的:
您可以在 how to use SQL Views in MySQL 上找到深入指南以及讨论和当前限制。
对于这两个功能,我强烈建议先试用您的用例,然后再在生产应用程序中采用 Prisma。例如,过去用户在运行return data back to the client 的程序时会遇到一些困难(不过现在应该已经解决了)。
此外,如果您遇到任何问题或错误,请随时在 Prisma github repo 上联系create a issue。我们非常活跃,会尽力帮助解决问题。
【讨论】: