#reactjs #apollo-client #apollo-server #prisma #prisma-graphql
Вопрос:
У меня есть 2 таблицы в моей базе данных:
college_db=# TABLE "Movie";
id | tmdb_id | poster_path | original_title
---- --------- ------------- ----------------
(0 rows)
college_db=# TABLE "User";
id | email | name | password
---- --------------------- --------------- --------------------------------------------------------------
1 | peter@**.nl | Peter **| $2b$04$Dqo4LN3S5ZOnk1T1MyatOuijbvHpl281oDChHdEu1ZfEOyk7mjLqu
(2 rows)
Я хочу создать отношения «многие ко многим», используя Apollo и Prisma. В настоящее время у меня есть мутация, которая добавляет фильм в таблицу фильмов:
// apollo client
const AddMovie = gql`
mutation addMovie(
$original_title: String!,
$tmdb_id: Int!,
$poster_path: String!
) {
addMovie(
original_title: $original_title,
tmdb_id: $tmdb_id,
poster_path: $poster_path
) {
original_title
}
}
`;
// apollo server
addMovie: (parent, args) => {
return prisma.movie.create({
data: {
original_title: args.original_title,
tmdb_id: args.tmdb_id,
poster_path: args.poster_path,
},
});
},
У пользователя может быть много фильмов, и у фильма может быть много пользователей.
Комментарии:
1. Для отношений «многие ко многим» вам нужны 3 таблицы. В третьем будут храниться отношения (он называется сводной таблицей/таблицей ссылок/ассоциативной таблицей). Таким образом, вы сохраните в нем идентификатор пользователя и идентификатор фильма