在 Prisma 中建模评级系统

Tim*_*ler 3 next.js prisma

我想在我的项目中包含一个评级系统(就像YouTube那样)(使用 Next.js)。我应该如何用 - 语言建立评级模型Prisma

我知道这是一个简短的问题。它值得一个简短的回答。

多谢你们!

Dan*_*iel 5

这是一个 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
}
Run Code Online (Sandbox Code Playgroud)

这使用小数来表示评级。如果您想做一些更简单的事情,您可以在模型上设置“赞成”和“反对”字段,Movie并在用户点击时增加这些字段:

model Movie {
  id      Int       @id @default(autoincrement())
  name    String    @unique
  year    DateTime
  thumbsUp Int
  thumbsDown Int
}
Run Code Online (Sandbox Code Playgroud)

通过这个更简单的模型,您可以使用原子序数操作来递增和递减:

const updatedMovie = await prisma.movie.update({
  where: { id: 10 }
  data: {
    thumbsUp: {
      increment: 1,
    },
  },
})
Run Code Online (Sandbox Code Playgroud)