Как разрешить 2 разных метода в одной функции в резольвере Apollo GraphQL? - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть этот преобразователь

SLAccount: (_, { imsUserId, imsToken }, context) =>
  new Promise((resolve, reject) => {
    addAuth(context, imsUserId, imsToken);
    context.model
      .getUserAccount(getEndpoint(imsUserId, imsToken))
      .then(resolve)
      .catch(reject);
  }),

Но есть другой метод / модель, который мне нужно включить:

  getHardware(endpoint) {
    return this.connector
      .get(
        `${endpoint}/...`,
      )
      .catch(res => this.handleError(res));
  }

Так что мне нужно что-то вроде этого:

SLAccount: (_, { imsUserId, imsToken }, context) =>
  new Promise((resolve, reject) => {
    addAuth(context, imsUserId, imsToken);
    context.model
      .getUserAccount(getEndpoint(imsUserId, imsToken))
      .then(resolve)
      .catch(reject);

    context.model
      .getHardware(getEndpoint(imsUserId, imsToken))
      .then(resolve)
      .catch(reject);
  }),

Дело в том, что мне не нужно вызывать их одновременно, иногда мне нужен только один из этих методов / моделей внутри SLAccount.

Так что же будетлучший способ справиться с этим?

1 Ответ

0 голосов
/ 23 ноября 2018

GraphQL определяется требованиями (запросом).

Когда вам нужно account, просто запросите это.Когда вам нужно account и связанный hardware, просто запросите оба - дополнительный резолвер будет вызван автоматически.Это основная идея GraphQL.Ищите любой учебник, посвященный отношениям в GraphQL.

...