如何使用 apollo 服务器对 graphQl 中的数据进行排序?
Posted
技术标签:
【中文标题】如何使用 apollo 服务器对 graphQl 中的数据进行排序?【英文标题】:How to sort data in graphQl with apollo server? 【发布时间】:2019-11-04 03:55:07 【问题描述】:我使用 apollo-server 编写了一个 graphql 代码。在发送数据之前,我想根据可选字段和过滤器对数据进行某种排序,并且我需要知道编写代码的正确方法? graphql 中是否有一种方法可以自动对我的数据进行排序?
我使用lodash 进行排序,我认为它们没有优化 在我搜索之后 我看到了prisma,但我的数据是由另一个不在数据库中的 api 返回的。 我需要棱镜之类的东西。
我的代码是这样的 我想在查询中根据姓名或姓氏对书籍进行排序 但在由 api 返回的真实书籍对象中。
const ApolloServer, gql, = require('apollo-server');
const books = [
title: 'Harry Potter and the Chamber of Secrets',
authors: ["name":"a1", "lastName":"aa1","name":"b1", "lastName":"bb1","name":"c1", "lastName":"cc1"]
,
title: 'Jurassic Park',
authors: ["name":"a" ,"lastName":"aa","name":"b", "lastName":"bb","name":"c", "lastName":"cc"]
,
];
const typeDefs = gql`
type Book
title: String
authors: [Author]
type Query
books: [Book]
type Author
name: String
lastName: String
`;
const resolvers =
Query:
books: () => books,
// in real this book return by an api !
,
;
const server = new ApolloServer( typeDefs, resolvers );
server.listen(port: 3002, path: '/graphql').then(( url ) =>
console.log(`???? Server ready at $url`);
);
graphql中有函数吗?
【问题讨论】:
在客户端还是服务器端排序更好? 【参考方案1】:不,无法单独使用 graphql 进行排序、排序或进行任何过滤。您需要自己或使用 ORM 实现排序(创建一个执行此操作的方法),然后将该逻辑挂钩到解析器上,该解析器将执行您提供的解析器方法。
【讨论】:
以上是关于如何使用 apollo 服务器对 graphQl 中的数据进行排序?的主要内容,如果未能解决你的问题,请参考以下文章
如何使“apollo 服务器”与 graphql schemaObject 一起使用?
如何使用 Apollo Server 2.0 GraphQL 将模式指令中的信息作为返回的数据包含在内?
如何使用 apollo 服务器从变量运行 graphql 查询