在 Prisma 中建模评级系统
Modeling a rating system in Prisma
我想在我的项目(使用 Next.js)中包含一个评级系统(例如 YouTube 有它)。我应该如何为 Prisma
语言的评级建模?
我知道这是一个简短的问题。它值得一个简短的回答。
谢谢大家!
这是一个 Prisma 架构,可让您记录电影的评级以及对移动进行评级的相关用户:
model User {
id Int @id @default(autoincrement())
email String @unique
city String
name String?
ratingsGiven Ratings[]
}
model Movie {
id Int @id @default(autoincrement())
name String @unique
year DateTime
Ratings Ratings[]
}
model Ratings {
id Int @id @default(autoincrement())
rating Decimal
movie Movie @relation(fields: [movieId], references: [id])
movieId Int
user User @relation(fields: [userId], references: [id])
userId Int
}
这里用小数来表示评分。如果你想做一些更简单的事情,你可以在 Movie
模型上有竖起大拇指和不竖起大拇指的字段,你可以在用户点击时增加这些字段:
model Movie {
id Int @id @default(autoincrement())
name String @unique
year DateTime
thumbsUp Int
thumbsDown Int
}
有了这个更简单的模型,您可以使用 atomic number operations 来递增和递减:
const updatedMovie = await prisma.movie.update({
where: { id: 10 }
data: {
thumbsUp: {
increment: 1,
},
},
})
我想在我的项目(使用 Next.js)中包含一个评级系统(例如 YouTube 有它)。我应该如何为 Prisma
语言的评级建模?
我知道这是一个简短的问题。它值得一个简短的回答。
谢谢大家!
这是一个 Prisma 架构,可让您记录电影的评级以及对移动进行评级的相关用户:
model User {
id Int @id @default(autoincrement())
email String @unique
city String
name String?
ratingsGiven Ratings[]
}
model Movie {
id Int @id @default(autoincrement())
name String @unique
year DateTime
Ratings Ratings[]
}
model Ratings {
id Int @id @default(autoincrement())
rating Decimal
movie Movie @relation(fields: [movieId], references: [id])
movieId Int
user User @relation(fields: [userId], references: [id])
userId Int
}
这里用小数来表示评分。如果你想做一些更简单的事情,你可以在 Movie
模型上有竖起大拇指和不竖起大拇指的字段,你可以在用户点击时增加这些字段:
model Movie {
id Int @id @default(autoincrement())
name String @unique
year DateTime
thumbsUp Int
thumbsDown Int
}
有了这个更简单的模型,您可以使用 atomic number operations 来递增和递减:
const updatedMovie = await prisma.movie.update({
where: { id: 10 }
data: {
thumbsUp: {
increment: 1,
},
},
})