Есть ли способ объявить тип из другого файла gql?

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

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

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

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

module.exports = UserTypeDefs;

И в моем logintypes.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 в моем logintypes.js, насколько это возможно.

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

1 ответ

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

type LoginResponse {
  user: User
}

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

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

const apollo = new ApolloServer({
  typeDefs: [userTypeDefs, loginTypeDefs],
  ...
})
Другие вопросы по тегам