使用 Prisma 创建间接引用

Posted

技术标签:

【中文标题】使用 Prisma 创建间接引用【英文标题】:Creating indirect references with Prisma 【发布时间】:2022-01-07 23:29:27 【问题描述】:

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,我也不能在没有从类别到用户的引用的情况下先创建记录,然后在同一个事务中添加缺少的引用。

那么你如何以安全的方式做这样的事情(我的用例略有不同但可比较)?

【问题讨论】:

【参考方案1】:

我认为Interactive Transaction 可以在这里工作。

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

    首先创建“创建者”或“用户”记录。 使用“创建者”记录返回的对象,并在创建“帖子”/依赖记录时随意引用其id

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

【讨论】:

以上是关于使用 Prisma 创建间接引用的主要内容,如果未能解决你的问题,请参考以下文章

Prisma 嵌套创建引发未知 arg 错误,而 prisma 示例工作

使用 prisma,如何从嵌套写入中访问新创建的记录(先更新,然后在其中创建)

使用 Prisma 的嵌套创建查询返回未定义

使用嵌套连接创建的 prisma 抛出错误

NestJS-Prisma 如何使用关系字段创建记录?

prisma introspect 生成无效模型