使用 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 可以在这里工作。

只需创建一个交易,其中:

  1. 首先创建“创建者”或“用户”记录。
  2. 使用“创建者”记录返回的对象并在创建“帖子”/相关记录时根据需要引用其 id

1 和 2 是 单独的 Prisma 查询(不是单个嵌套写入)。