验证错误:此行不是有效的字段或属性定义

Tim*_*imo 4 prisma

我想知道为什么我的模型Like-model)不能按我的预期工作。

也许有人可以解释一下?

model User {
  id Int @id @default(autoincrement())
  likes Like[]
}

model Like {
  fromUser User @relation(fields: [fromUserId] references: [id])
  fromUserId Int
  toUser User @relation(fields: [toUserId] references: [id])
  toUserId Int
  @@id([fromUserId, toUserId])
}
Run Code Online (Sandbox Code Playgroud)

错误如下:Error validating: This line is not a valid field or attribute definition.

它指向fromUser User @relation(fields: [fromUserId] references: [id])toUser User @relation(fields: [toUserId] references: [id])

Rya*_*yan 6

您需要按以下方式建模您的关系:

model User {
  id            Int    @id @default(autoincrement())
  likedUsers    Like[] @relation("likedUsers")
  usersWhoLiked Like[] @relation("usersWhoLiked")
}

model Like {
  id             Int   @id @default(autoincrement())
  likedUser      User? @relation("likedUsers", fields: [likedUserId], references: [id])
  likedUserId    Int?
  userWhoLiked   User? @relation("usersWhoLiked", fields: [userWhoLikedId], references: [id])
  userWhoLikedId Int?
}
Run Code Online (Sandbox Code Playgroud)

每当您与模型有超过 1 个关系时,您就需要提供一个关系名称来消除关系的歧义

您还需要存储您喜欢的用户以及喜欢当前用户的用户。所以你需要两个关系来做到这一点。