graphql解析器优化

时间:2018-03-28 18:09:42

标签: graphql graphql-js apollo-server

如果我有架构:

type Query {
  posts: [Post!]!
}
type Post {
  title: String!
  lotsofdata: String
}

和解析器:

function posts(parent, args, context, info) {
  return readAllPosts(/*?*/)
}

还有两个可能的问题。查询#1:

query {
  posts{
    title        
  }
}

和查询#2:

query {
  posts{
    title 
    lotsofdata
  }
}

是否可以优化解析器,因此使用查询#1 readAllPosts只从数据库中提取标题,但对于查询#2,它会拉回标题和lotsofdata?

我查看过parent,args,context和info参数,但是看不到任何东西来指示是否正在调用解析器来响应#1之类的查询或类似#2。 / p>

1 个答案:

答案 0 :(得分:1)

不确定它是否仍然与您相关,但是应该可以,您可以查看名为https://github.com/robrichard/graphql-fields#readme的库。它将解析解析器函数中的info参数。这样,您可以获得有关解析器中已执行字段的信息。另一部分是使用此信息来构建适当的SQL语句或投影或其他内容(取决于您使用的数据库)。我希望这会有所帮助。 最佳大卫