首页 > 解决方案 > 如何在 NodeJS 中导入、导出和合并多个 GraphQL 类型定义

问题描述

文件结构是这样的:

.
├── typeDefs.js
├── server.js
└── types
     ├── types_index.js
     └── addressResolver
          ├── addressResolver_index.js
          ├── address.js
          ├── Mutation.js 
          └── Query.js

./types/addressResolver,我保存了 GraphQL 类型定义文件如下:

我想从>>>>传这三个./types/addressResolver/addressResolver_index.jsgql./types/types_index.js./typeDefs.js

所以最终,我想在以下内容中包含以下内容./typeDefs.js

export const typeDefs = gql`
type Query{
    hello: String!
    cats:[Cat!]!
    resolveAddress(userId: String!, addressType: String!): Address!
    address:[Address!]!
}

type Address {
    id: ID!,
    customer_id: String!,
    address_type: String!,
    address: String!
}

type Cat{
    id: ID!
    name: String!
}

type Mutation{
    createCat(name: String!): Cat!

    "Add a new address."
    addAddress(userId: String!, addressType: String!, address: String!): Boolean!

    "Delete an address."
    deleteAddress(userId: String!, addressType: String!, address: String!): Boolean!
}
`

我现在正在做的是:

但它不起作用。

PS我正在使用ES6,所以我必须坚持export而不是module.exports =,而import不是require

标签: javascriptnode.jsgraphql

解决方案


我通过在以下代码中找到了解决方案./types/addressResolver/addressResolver_index.js

import { mergeTypeDefs} from '@graphql-tools/merge';
import {Address} from './address.js';
import {addressMutation} from './Mutation.js';
import {addressQuery} from './Query.js';

const toMergeTypes = [Address, addressMutation, addressQuery];
const mergedTypes = mergeTypeDefs(toMergeTypes);
export const addressResolverTypes = mergedTypes;

推荐阅读