Расширение типов 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,
}
}
}
})