Итак, клиенту нужен ответ с такой структурой
user
|_ trophies <-- user earned trophies
|_ trophy_count: Int <-- how many times a user earned a trophy
и моя схема выглядит так:
type User {
trophies: [Trophy]
}
type Trophy{
...
trophy_count # <- needs the user_id to work
}
Можно ли иметь trophy_count в типе Trophy? Как я могу структурировать свою схему, чтобы получить вышеуказанный запрос?


Вам нужен шрифт посередине.
type User {
trophies: [UserTrophy]
}
type UserTrophy {
trophy: Trophy
trophy_count: Int
}
type Trophy{
# only trophy related properties
}
Однако запрос клиента немного изменится.
User{
trophies{
trophy{
...
}
trophy_count
}
Если вы должны вернуться, следуя приведенной выше структуре ответа, то есть способы, но они менее удобны для обслуживания / чтения и могут вызвать проблемы, если запрос будет выполнен другим способом, чем вы ожидаете.
user_id в качестве аргумента trophy_count (не будет работать при запросе многих пользователей)User{
trophies{
...
trophy_count(user_id: ID) # <-- filter by user_id in the resolver
}
user_id внукам и отфильтруйте с ним, если естьв преобразователе трофеев
return {
...trophy,
user_id: parent.id
};
в преобразователе trophy_count
if (typeof parent.user_id == 'undefined') throw new Error("Must be queried with user type");
// continue logic ...
trophy_count ВСЕХ пользователей.Не стесняйтесь предлагать любые другие решения.