Расширение типов DB Design с помощью Prisma

Если у меня есть схема, которая выглядит как ниже, где у пользователя может быть много изображений, но у меня нет поля на изображении, чтобы указывать на пользователя. Как сохранить новое изображение и подключить его к пользователю? Я думал, что опущу User поле на Image Type потому что у меня нет причин запрашивать пользователя на основе идентификатора изображения. Но я не знаю, как сделать этот вызов, чтобы сохранить, используя сгенерированный клиент prisma.

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

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

Обычно мои вызовы создания, которые связывают создание с другой таблицей, выглядят так (ниже), но я считаю, что этот код потребует user поле на моем Image тип.

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

Я правильно об этом думаю? Должны ли вы всегда иметь двунаправленные ссылки между двумя таблицами с такими отношениями?

Одним из основных преимуществ отсутствия ссылки на пользователя является то, что я могу использовать таблицу изображений для других целей, кроме пользователей. Такие как продукты или что нет.

1 ответ

Я считаю, что я понял это. Я удалил User поле на Image типа, как я намеревался сделать. Теперь, когда я иду, чтобы добавить изображения к пользователю, я использую клиент так:

await context.prisma.updateUser({
        where: {
          id: 'cjx4wh7412oyc0b42tbhsu6ez',
        },
        data: {
          images: {
            create: {
              postedBy: { connect: { id: userId } },
              filename: result.filename,
              path: result.path,
              mimetype: result.mimetype,
            }
          }
        }
      })
Другие вопросы по тегам