有没有办法可以从其他gql​​文件中声明类型?

时间:2020-02-03 15:24:09

标签: graphql apollo-server graphql-schema

我一直在努力使这一工作成功。我目前正在学习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;

感谢您的帮助。我不想再在 logintypes.js 中再次声明我的类型用户

谢谢。

1 个答案:

答案 0 :(得分:0)

无需导入其他模块。只需按名称引用类型即可:

type LoginResponse {
  user: User
}

然后,当您创建ApolloServer实例时,将typeDefs作为数组传递:

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

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