使用graphql-tools定义Schema

时间:2017-07-16 21:56:14

标签: node.js graphql

我正在尝试为我的API定义我的架构。我遇到的问题是每个资源都有许多不同的部分。理想情况下,我希望能够说section是一个JSON对象,而不是定义各部分中的所有不同模块。有没有办法可以做到这一点?据我所知,使用JSON似乎没有graphql-tools类型定义

// Define your types here.
const typeDefs = `

  type Resource {
    id: ID,
      title: String!,
        slug: String!,
      path: String!,
      template: String!,
      published: String!,
      sections: Sections
    }

    type Sections {
      // ...
    }

    type Query {
      allLinks(filter: LinkFilter): [Link!]!
      findResource(filter: ResourceFilter): [Resource!]!
    }

`;

1 个答案:

答案 0 :(得分:1)

您需要导入自定义JSON标量。 This module是最受欢迎的广告之一。

在typeDefs中的任何位置添加以下行:

function water() {
  return function (valueOfWater) {
    return {
      water: valueOfWater
    };
  };
}
console.log(water()('is liquid')); // returns: { water: 'is liquid' }

然后在传递给scalar JSON 的{​​{1}}对象内:

resolvers

一句警告:只要您使用JSON作为标量,就会失去灵活性。 GraphQL的部分魅力在于它允许客户端只查询他们需要的字段。当您使用JSON时,您的客户端将只能查询整个JSON块,或者根本不查询它们 - 它们无法挑选和选择部分JSON。