Есть ли способ, которым мы можем объявить тип из другого файла gql? - PullRequest
1 голос
/ 03 февраля 2020

Я пытался заставить это работать. В настоящее время я изучаю сервер Apollo и GraphQL. Я ходил в разные документы, но я не могу найти ответ. Вот что я пытаюсь сделать.

У меня есть usertypes. js и вот фрагмент кода:

const { gql } = require('apollo-server');

const UserTypeDefs = gql`
  type User {
    _id: ID!,
    username: String!,
    password: String!,
  }
`;

module.exports = UserTypeDefs;

И на моих типах входа. js:

const { gql } = require('apollo-server');
const { UserTypeDefs } = require('./usertypes.js') 

const LoginTypeDefs = gql`
    type LoginResponse {
        user: UserTypeDefs.User //this is not working. :(
    }

    extend type Mutation {
        login(username: String!, password: String!): LoginResponse!
    }
`;


module.exports = LoginTypeDefs;

Любая помощь приветствуется. Я не хочу объявлять мой тип User снова в моих логинах типов. js как можно больше.

Заранее спасибо.

1 Ответ

0 голосов
/ 03 февраля 2020

Нет необходимости импортировать другой модуль. Просто обратитесь к типу по имени:

type LoginResponse {
  user: User
}

Затем, когда вы создаете свой экземпляр ApolloServer, передайте typeDefs как массив:

const userTypeDefs = require(...)
const loginTypeDefs = require(...)

const apollo = new ApolloServer({
  typeDefs: [userTypeDefs, loginTypeDefs],
  ...
})
...