Relacje Prisma rozwiązują ogromny problem z bazami danych i obsługą danych.
Załóżmy, że masz w swojej aplikacji listę użytkowników, którzy tworzą tweety (wyobraź sobie Twittera).
W swoim schemacie możesz zdefiniować relację między tymi 2 podmiotami w ten sposób:
model Tweet {
id Int @id @default(autoincrement())
text String
author User @relation(fields: [authorId], references: [id])
authorId Int
}
model User {
id Int @default(autoincrement()) @id
tweets Tweet[]
}
Kiedy tworzysz nowy tweet, kojarzysz go z użytkownikiem o identyfikatorze 1
w ten sposób:
await prisma.tweet.create({
data: {
text: req.body.content,
author: {
connect: { id: 1 }
}
}
})
Następnie możesz pobrać informacje o autorze, gdy otrzymasz jeden tweet, za pomocą:
await prisma.tweet.findMany({
include: {
author: true
}
})
Możesz także utworzyć użytkownika i wypełnić bazę danych 2 powiązanymi z nim tweetami:
await prisma.user.create({
data: {
tweets: {
create: [
{ text: 'test' },
{ text: 'test2' },
]
}
}
})