首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prisma orm中的嵌套写入

Prisma orm中的嵌套写入
EN

Stack Overflow用户
提问于 2022-04-12 15:59:12
回答 1查看 656关注 0票数 1

我的模式如下所示:

代码语言:javascript
复制
model Transaction {
 id                 BigInt       @id @default(autoincrement())
 description        String?      @db.VarChar(256)
 category           Category?    @relation(fields: [categoryId], references: [id])
 createdById        Int          @map("fk_created_by")
 createdBy          UserAccount  @relation("category_fk_created_byTouser_account", fields: [createdById], references: [id]
}

model Category {
  id                      Int                     @id @default(autoincrement())
  name                    String                  @db.VarChar(40)
  categoryFilters         CategoryFilter[]
}

model CategoryFilter {
  id                  BigInt         @id @default(autoincrement())
  words               String         @db.VarChar(255)
  categoryId          Int?           @map("fk_category_id")
}

我的问题是,为什么要这样做:

代码语言:javascript
复制
  await prisma.workspaceTransaction.create({
    data: {
      description: 'any',
      createdBy: {
        connect: {
          id: 1
        }
      },
      category: {
        create: {
          name: 'Este é um teste',
          createdById: 1,
          categoryFilters: {
            createMany: {
              data: [
                {
                  words: 'Novo teste'
                }
              ]
            }
          }
        }
      }
    }
  })

这不是吗?

代码语言:javascript
复制
await prisma.workspaceTransaction.create({
    data: {
      description: 'any',
      createdById: 1,
      category: {
        create: {
          name: 'Este é um teste',
          createdById: 1,
          categoryFilters: {
            createMany: {
              data: [
                {
                  words: 'Novo teste'
                }
              ]
            }
          }
        }
      }
    }
  })

这两个例子之间唯一的区别是createdBy命令。而且我可以使用createdById参数创建没有嵌套对象的事务。有人知道为什么会这样吗?还是我错过了什么?

给出的错误是:未知的arg createdById在data.createdById中用于TransactionCreateInput类型

EN

回答 1

Stack Overflow用户

发布于 2022-04-13 13:15:50

在第二个示例中,您直接编写一个被认为不安全的外键(createdById),如果没有对应于createdByIdUserAccount怎么办。

在第一个示例中使用connect时,如果Prisma找不到对应于id 1的UserAccount,则会引发错误。

第一个例子是首选的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71845820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档