【问题标题】:Extending types DB Design with Prisma使用 Prisma 扩展类型 DB 设计
【发布时间】:2019-12-31 02:52:07
【问题描述】:

如果我有一个如下所示的架构,其中一个用户可以有许多图像,但我没有图像上的字段来指向用户。如何保存新图像并将其连接到用户?我想我会省略 Image Type 上的 User 字段,因为我没有理由根据图像 ID 查询用户。但我不知道如何使用生成的 prisma 客户端进行调用以保存。

type User {
  id: ID! @id
  name: String
  images: [Image] @relation(onDelete: CASCADE)
}

type Image{
  id: ID! @id
  createdAt: DateTime! @createdAt
  filename: String!
}

通常我的创建调用将创建与另一个表连接起来,如下所示,但我相信这段代码需要我的Image 类型上的user 字段。

context.prisma.createImage({
      filename: "test",
      user: { connect: { id: args.user.id } }
    })

我是否正确地考虑了这一点?您是否应该始终在具有这种关系的两个表之间进行双向引用?

没有指向用户的链接的主要好处之一是我可以将图像表用于用户以外的其他事物。比如产品什么的。

【问题讨论】:

    标签: database-design prisma-graphql nexus-prisma


    【解决方案1】:

    我相信我已经弄清楚了。我删除了Image 类型上的User 字段,就像我打算做的那样。现在,当我向用户添加图像时,我会像这样使用客户端:

    await context.prisma.updateUser({
            where: {
              id: 'cjx4wh7412oyc0b42tbhsu6ez',
            },
            data: {
              images: {
                create: {
                  postedBy: { connect: { id: userId } },
                  filename: result.filename,
                  path: result.path,
                  mimetype: result.mimetype,
                }
              }
            }
          })
    

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 2016-10-25
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多