使用 Prisma 创建间接引用
Creating indirect references with Prisma
Prisma documentation 包含一个关于如何创建嵌套记录(缩短)的示例:
const user = await prisma.user.create({
data: {
email: 'yvette@prisma.io',
name: 'Yvette',
posts: {
create: [
{
title: 'How to make an omelette',
categories: {
create: {
name: 'Easy cooking',
},
},
},
],
},
},
})
假设我还需要从创建的类别(“创建者”等)中引用创建的用户。 Prisma 不会像直接引用那样填写用户 ID,但我也没有用户 ID 在数据中自己指定。如果我正确理解 Prisma-transactions,我也无法在没有从类别到用户的引用的情况下先创建记录,然后在同一事务中添加缺少的引用。
那么你如何以安全的方式做这样的事情(我的用例略有不同但具有可比性)?
我认为 Interactive Transaction 可以在这里工作。
只需创建一个交易,其中:
- 首先创建“创建者”或“用户”记录。
- 使用“创建者”记录返回的对象并在创建“帖子”/相关记录时根据需要引用其
id
。
1 和 2 是 单独的 Prisma 查询(不是单个嵌套写入)。
Prisma documentation 包含一个关于如何创建嵌套记录(缩短)的示例:
const user = await prisma.user.create({
data: {
email: 'yvette@prisma.io',
name: 'Yvette',
posts: {
create: [
{
title: 'How to make an omelette',
categories: {
create: {
name: 'Easy cooking',
},
},
},
],
},
},
})
假设我还需要从创建的类别(“创建者”等)中引用创建的用户。 Prisma 不会像直接引用那样填写用户 ID,但我也没有用户 ID 在数据中自己指定。如果我正确理解 Prisma-transactions,我也无法在没有从类别到用户的引用的情况下先创建记录,然后在同一事务中添加缺少的引用。
那么你如何以安全的方式做这样的事情(我的用例略有不同但具有可比性)?
我认为 Interactive Transaction 可以在这里工作。
只需创建一个交易,其中:
- 首先创建“创建者”或“用户”记录。
- 使用“创建者”记录返回的对象并在创建“帖子”/相关记录时根据需要引用其
id
。
1 和 2 是 单独的 Prisma 查询(不是单个嵌套写入)。