postgresql - 从嵌套的 Prisma 事务中创建多条记录?
问题描述
我有以下 Prisma 查询在用户注册时运行,它创建用户帐户以及创建他们将属于的团队。
prisma.account.create({
data: {
team: {
create: { name: team_name },
},
username,
email,
password
},
})
但是,用户还需要通过电子邮件验证他们的团队创建。为此,我需要为其创建记录的第三个数据库表,prisma Schema 为:
prisma.team_verification.create({
data: {
team: {
connect: {
team_id,
},
},
},
})
有什么办法可以合并这两个查询,以便在注册时创建一个新团队,一个带有 team_id = 新团队的新“帐户”,以及一个带有 team_id = 新团队的新“team_verification”?
解决方案
您可以使用交互式事务。由于这是一个 previewFeature,您应该在生成器客户端中配置它。
generator client {
provider = "prisma-client-js"
previewFeatures = ["interactiveTransactions"]
}
接着:
const user: User = await prisma.$transaction(async (prisma) => {
let user= await prisma.account.create({
data: {
team: {
create: { name: team_name },
},
username,
email,
password
},
})
prisma.team_verification.create({
data: {
team: {
connect: { user.id }
},
},
})
return user
})
推荐阅读
- jquery - 选择 2 Webpack-encore
- javascript - 在javascript Themezy模板中向地图添加标记
- xcode - 在 Xcode 11 中将分支合并到 master 中?
- r - R Leaflet PopupGraph - 在 map_marker_click 上添加 PopupGraphs
- java - 具有复杂键的 SpringData Redis 存储库
- azure - 是否可以将 Azure 密钥保管库秘密用于 Blob 存储?
- php - 创建一个 HTML 表单,从填充邮件地址提交到我的电子邮件地址
- python - 导致警告的变量类型注释
- multithreading - 在 TCP 客户端服务器中循环读取和写入数据时的并发问题
- java - 如何使用 apache nifi 连接到远程 postgresql