Graphql 图形ql+;axios-过滤和排序

Graphql 图形ql+;axios-过滤和排序,graphql,axios,Graphql,Axios,如何对数据进行筛选和排序?关于排序,我应该使用gatsby.js吗?还有别的办法吗 const RootQuery = new GraphQLObjectType({ name: "Query", description: "Root Query", fields: () => ({ member: { type: MemberType, description: "A Single Person", args: {

如何对数据进行筛选和排序?关于排序,我应该使用gatsby.js吗?还有别的办法吗

const RootQuery = new GraphQLObjectType({
  name: "Query",
  description: "Root Query",
  fields: () => ({
    member: {
      type: MemberType,
      description: "A Single Person",
      args: {
        nick: { type: GraphQLString }
      },
      resolve(parent, args) {
        return axios
          .get("http://25.98.140.121:5000/data")
          .then(members.find(member => member.nick === args.nick))
      }
    },
    members: {
      type: new GraphQLList(MemberType),
      description: "List of All Members",
      resolve(parent, args) {
        return axios
          .get("http://25.98.140.121:5000/data")
          .then(res => res.data)
      }
    },
    school: {
      type: SchoolType,
      description: "A Single School",
      args: {
        name: { type: GraphQLString }
      },
      resolve: (parent, args) => schools.find(school => school.name === args.name)
    },
    schools: {
      type: new GraphQLList(SchoolType),
      description: "List of All Schools",
      resolve(parent, args) {
        return axios
          .get("http://25.98.140.121:5000/data")
          .then(res => res.data)
    }
  })
});
当然,上面的过滤(学校、会员)不起作用,因为我不知道如何连接“查找”和“返回axios”。
这样,当我使用会员(尼克:约翰)或学校(名称:XYZ)时,我没有得到过滤的数据

希望你明白我的意思。我应该换什么?或者你有其他的解决办法

你离得不远
axios.get
返回一个承诺,您在解析器中正确地返回了该承诺。您还正确地使用了
然后
来修改该承诺的解析值。这里唯一的问题是传递给
然后
的参数应该是一个函数。所以你想做一些类似的事情:

return axios
  .get("http://25.98.140.121:5000/data")
  .then(res => res.data.find(member => member.nick === args.nick))
无论您传递给
的函数是什么,都将使用您正在调用的承诺的解析值调用
然后
。因此,如果
axios.get
返回一个将解析为对象成员数组的承诺,则该值将传递给函数。请注意,我们在上面定义了内联函数,但也可以单独定义:

const getMemberByNick = (res) => res.data.find(member => member.nick === args.nick)

return axios
  .get("http://25.98.140.121:5000/data")
  .then(getMemberByNick)
甚至

const getMemberByNick = (data) => data.find(member => member.nick === args.nick)

return axios
  .get("http://25.98.140.121:5000/data")
  .then(res => getMemberByNick(res.data))

请具体说明哪些代码“不起作用”。这里有四种不同的功能。你对哪一个有问题?对不起,我已经编辑了我的帖子。现在我得到了“members.find不是一个函数”。非常感谢。哎呀。axios返回一个值,因此我们需要访问该值的
数据
属性