首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在prisma创建中自动添加UUID关系

在prisma创建中自动添加UUID关系
EN

Stack Overflow用户
提问于 2021-06-19 08:47:37
回答 2查看 19K关注 0票数 5

我的Postgres数据库中有一个UserUserProfilePost模型。UserUserProfile相互依赖。我正在尝试创建一个User,用它自动创建一个UserProfile,但我似乎找不出如何为UserProfile关系自动假定User的ID,而是使用UUID作为User模型。

模式模型

代码语言:javascript
运行
复制
model User {
  id             String       @id @default(uuid())
  createdAt      DateTime     @default(now())
  username       String       @unique @db.VarChar(20)
  emailEncrypted String       @unique
  emailIv        String       @unique
  password       String
  isMod          Boolean      @default(false)
  isAdmin        Boolean      @default(false)
  emailConfirmed Boolean      @default(false)
  profile        UserProfile?
}

model UserProfile {
  user     User      @relation(fields: [id], references: [id])
  id       String    @unique
  posts    Post[]
  comments Comment[]
}

model Post {
  id        String      @id @default(uuid())
  createdAt DateTime    @default(now())
  title     String      @db.VarChar(300)
  caption   String      @db.VarChar(1000)
  upvotes   Int         @default(0)
  downvotes Int         @default(0)
  comments  Comment[]
  author    UserProfile @relation(fields: [authorId], references: [id])
  authorId  String
}

查询

代码语言:javascript
运行
复制
const user = await prisma.user.create({
    data: {
        username,
        emailEncrypted: encrypted,
        emailIv: iv,
        password: hashedPassword,
        profile: {
            create: {}, // create a UserProfile that assumes the created user's UUID as a relation
        },
    },
    select: {
        id: true,
    },
});

正如您所看到的,我尝试使用create: {}来假设用户的UUID,但是它无法创建一个实际的UserProfile,只是一个User,这当然会破坏系统。

EN

回答 2

Stack Overflow用户

发布于 2021-07-04 10:11:22

我也查过这个。为了在创建用户之后包含profile数据,我做了以下调整。

代码语言:javascript
运行
复制
const user = await prisma.user.create({
    data: {
        username: "username",
        emailEncrypted: "encrypted",
        emailIv: "iv",
        password: "hashedPassword",
        profile: {
            create: {},
        },
    },
    select: {
        id: true,
        createdAt: true,
        emailConfirmed: true,
        emailIv: true,
        emailEncrypted: true,
        isAdmin: true,
        isMod: true,
        password: true,
        profile: true,
        username: true,
    },
});

这输出,

没问题,效果很好。

还在想你面临的问题是什么。

你能粘贴错误日志吗?

票数 3
EN

Stack Overflow用户

发布于 2021-06-22 04:53:40

这是在普里斯马增加关系的正确方式。使用create添加关系,UUID将自动添加到该记录中。你不需要做任何其他的事。我尝试了以下几种方法,效果很好:

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

https://stackoverflow.com/questions/68045139

复制
相关文章

相似问题

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