Призма graphql вычисляемых полей на отношениях - PullRequest
0 голосов
/ 14 марта 2019

У меня есть следующая модель данных:

type Tvshow {
  id: ID! @unique
  title: String!
  pricing: [Pricing]
  startDate: DateTime!
  endDate: DateTime!
  subscribers: [Tvshowsubscription!]
 .....
}

type FavoriteTvshow {
  id: ID! @unique
  tvshow: Tvshow!
  user: User!
}

type User {
  id: ID! @unique
  name: String
  email: String! @unique
  password: String
  googleID: String @unique
  resetToken: String
  resetTokenExpiry: String
  permissions: [Permission]
  address: Address
  phone: String
  favorites: [FavoriteTvshow!]
  tvshowSubscriptions: [Tvshowsubscription!]
}

У меня есть свой собственный преобразователь Tvshow с использованием addFragmentToInfo:

resolver-query.js

const Query = {
 ...
  favoriteTvshows: forwardTo('db'),
  tvshow: (parent, args, ctx, info) => {
    const fragment = `fragment EnsureComputedFields on Tvshow { pricing { minQuantity maxQuantity unitPrice} subscribers { id }}`
    return ctx.db.query.tvshow({}, addFragmentToInfo(info, fragment))
  },
 ....
};

tvshow-resolver.js

const Tvshow = {
  countSubscribers: (parent) => {
    return parent.subscribers.length;
  },
}

Это пример, у меня есть больше вычисляемых полей для Tvshow

Я могу запроситьTvshows с countSubscribeers, он отлично работает, делая что-то вроде этого:

query SINGLE_TVSHOW_QUERY($id: ID!) {
  tvshow(where: { id: $id }) {
    id
    title
    pricing {
      minQuantity
      maxQuantity
      unitPrice
    }
    startDate
    endDate
    countSubscribers
  }
}

Но я хочу получить все любимые Tvshow от пользователя, возвращающего countSubscribeers, запрос для которого может быть примерно таким:

query FAVORITES_FROM_USER($userId: ID!) {
    favoriteTvshows(where: { user: {id: $userId} }) {
      tvshow {
        id
        title
        startDate
        endDate
        countSubscribers
      }
    }
  }

Проблема в том, что когда я запрашиваю это в tvshow-resolver.js, о котором я упоминал ранее, у родителя нет объекта подписчика

1 Ответ

0 голосов
/ 15 марта 2019

Ошибка была очень глупой, но я все равно ее опубликую.Мне нужны подписчики в запросе

query FAVORITES_FROM_USER($userId: ID!) {
    favoriteTvshows(where: { user: {id: $userId} }) {
      tvshow {
        id
        title
        startDate
        endDate
        subscribers { <--- 
          id
          quantity
        }
        countSubscribers
      }
    }
  }

Таким образом, родительский объект в tvshow-resolver.js будет иметь объект подписчиков

...