javascript - 如何在 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/address.js
export const Address = gql` type Address { id: ID!, customer_id: ID!, address_type: String!, address: String! }
`
在
./types/addressResolver/Mutation.js
export const addressMutation = gql` type Mutation { "Add a new address." addAddress(userId: String!, addressType: String!, address: String!): Boolean! "Delete an address." deleteAddress(userId: String!, addressType: String!, address: String!): Boolean! }
`
在
./types/addressResolver/Query.js
export const addressQuery = gql` type Query { resolveAddress(userId: String!, addressType: String!): Address! }
`
我想从>>>>传这三个./types/addressResolver/addressResolver_index.js
gql./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!
}
`
我现在正在做的是:
在
./types/addressResolver/addressResolver_index.js
:export {Address} from './address.js'; export {addressMutation} from './Mutation.js'; export {addressQuery} from './Query.js';
在
./types/types_index.js
:export {Address, addressMutation, addressQuery} from './addressResolver/index.js';
在
./typeDefs.js
:import {Address, addressMutation, addressQuery} from './types/index.js'; export const typeDefs = [Address, addressMutation, addressQuery]
但它不起作用。
PS我正在使用ES6,所以我必须坚持export
而不是module.exports =
,而import
不是require
解决方案
我通过在以下代码中找到了解决方案./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;
推荐阅读
- python - 计算 Z 分数
- javascript - 用户名的正则表达式 (regex, regexp)
- java - 如何通过接口从实现接口的类中调用方法?
- r - 包装异常值不会在 R markdown 上编织
- c# - 当我尝试播放特定动画剪辑时收到错误消息
- scala - Scala/Spark - 如何获取所有子数组的第一个元素
- r - 在参与者的 R 中创建一个循环;每个参与者创建 1 个箱线图 .tiff
- c++ - 有没有比在循环中忽略更好的方法来提取字符串流的第 n 个元素?
- html - 如何更改具有班级卡的 div 的位置
- php - php/mysql 正确合并具有相同列的 2 个表