Согласно документации , директива @relation
используется для указания обоих концов отношения .
Давайте возьмем следующую модель данных:
type User {
postsWritten: [Post!]!
postsLiked: [Post!]!
}
type Post {
author: User!
likes: [User!]!
}
Здесь мы имеем неоднозначную связь между почтой и пользователем.Prisma должна знать, какое поле пользователя (postsWritten
? postsLiked
?) Связать с каким полем почты (author
? likes
?)
Чтобы решить эту проблему, мы используем @relation
симя, используемое в на обоих концах отношения .
Это сделает модель данных похожей на это:
type User {
postsWritten: [Post!]! @relation(name: "AuthorPosts")
postsLiked: [Post!]! @relation(name: "UserLikes")
}
type Post {
author: User! @relation(name: "AuthorPosts")
likes: [User!]! @relation(name: "UserLikes")
}
Поскольку мы использовали то же имя для полей postsWritten
и author
, Prisma теперь может связать эти два в базе данных.То же самое для postsLiked
и likes
.
В заключение, проблема с вашей моделью данных состоит в том, что вы использовали разные имена в ваших отношениях.Это смущает Призма, которая думает, что это разные отношения.Это объясняет, почему вы можете делать запросы одним, а не другим способом.