Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript Apollo服务器中的嵌套查询_Typescript_Graphql_Graphql Js_Apollo Server - Fatal编程技术网

Typescript Apollo服务器中的嵌套查询

Typescript Apollo服务器中的嵌套查询,typescript,graphql,graphql-js,apollo-server,Typescript,Graphql,Graphql Js,Apollo Server,我正在使用apollo服务器构建一个GraphQL模式。我的模式有大量查询,我想将它们分组在一起。有没有办法按域对它们进行分组,以便我可以进行如下查询: query { Books { getAll { ... } getByUser { ... } } } 我可以用graphql dotnet实现这一点,但我不确定如何用apollo server实现这一点 type Query { books: Books } type

我正在使用apollo服务器构建一个GraphQL模式。我的模式有大量查询,我想将它们分组在一起。有没有办法按域对它们进行分组,以便我可以进行如下查询:

query {
  Books {
    getAll {
      ...
    }
    getByUser {
      ...
    }
  }
}
我可以用graphql dotnet实现这一点,但我不确定如何用apollo server实现这一点

type Query {
  books: Books
}

type Books {
  getAll: [Book!]!
}

type Book {
  id: ID!
  title: String!
}
您的解析程序需要如下所示:

const resolvers = {
  Query: {
    books: () => {
      return {}
    },
  },
  Books: {
    getAll: () => {
      # return list of books
    }
  }
}

books字段返回一个对象类型books,因此它的解析器必须返回一个对象,即使它是一个空对象,如上所示。如果字段解析为null,则即使请求了子字段,也不会解析任何子字段。通过返回一个空对象,我们可以确保子字段也得到解析。

不清楚您在问什么。Apollo是一个GraphQL客户端,因此您可以使用的查询取决于您正在查询的服务。您是否询问当地州管理,即使用@client指令的查询?更重要的是,询问建议或做某事的最佳方式往往会吸引固执己见的答案,这可能会使您的问题溢出。请考虑改写你的问题,询问我如何做X或做X的利弊,这是更合适的问题。阿波罗是客户和服务器。但我说的是服务器。将其添加到主要问题中。抱歉,Vytautas,现在还不清楚您在谈论阿波罗服务器中的等效功能。感谢您澄清和编辑此问题。我再次编辑它只是为了根据您的评论和以前的编辑提供一些额外的细节。也许您可以提供带有GraphObjectType语法的typescript示例?Daniel谢谢您的回答,它工作得很好。我设法完成了打字脚本版本。有趣的是,它对我不起作用,因为出于某种原因,在typescript版本中,empty resolve应该返回空数组,而不是一个对象:books:{type:books,resolve:=>[]}。知道为什么吗@VyTautAsTranskunas如果您确实解析:=>{},这不是返回一个空对象-这是一个具有空体的函数-如果使用箭头函数,您必须执行解析:=>{}。@VyTautAsTranskunas如果您觉得答案足够回答您的问题,请接受答案。