【问题标题】:Modeling a rating system in Prisma在 Prisma 中建模评级系统
【发布时间】:2021-07-07 23:24:49
【问题描述】:

我想在我的项目(使用 Next.js)中包含一个评分系统(就像 YouTube 有它)。我应该如何为Prisma-language 中的评分建模?

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

谢谢各位!

【问题讨论】:

  • 你能描述一下你需要评级的背景吗?

标签: next.js prisma


【解决方案1】:

这是一个 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,
    },
  },
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多