微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 graphql 搜索查询

如何解决使用 graphql 搜索查询

我正在使用“apollo-server-express”,我想创建一个查询,该查询必须按同一字段在不同集合中进行搜索

这是我的架构:

import { gql } from 'apollo-server-express';

export default gql `
  extend type Query {
    search(contains: String!): SearchResult
  }

  union SearchResult = Race | Person | Car

  type Race {
     id: String
     city: String
     name: String
  }

  type Person {
    id: String
    name: String
  }

  type Car {
    id: String
    name: String
  }
`;

这是我的解析器: 导出认值{

SearchResult: {
    __resolveType(obj,context,info) {
        if (obj instanceof Race) {
            return 'Race';
        }

        if (obj instanceof Person) {
            return 'Person';
        }

        if (obj instanceof Car) {
            return 'Car';
        }

        return null;
    }
},Query: {
    search: async (parent,{ str },{ models }) => {
        const races = await models.Race.find({ 'name': str });
        const persons = await models.Person.find({ 'name': str });
        const cars = await models.Car.find({ 'name': str });
        return [...races,...persons,...cars];
    }
}

}

名称搜索,我想获取每个集合的名称。 例如:

query search {
  search(contains: "something") {
    __typename
      ... on Race {
        name
        city
      }
      ... on Person {
        name
      }
      ... on Car {
        name
        year    
     }
   }
}

我得到了这个结果,但我想按集合分组。 我得到:

"search": [
  {
    "__typename": "Person","name": "JOY MISHKA"
  },{
    "__typename": "Person","name": "PAISES BAJOS"
  },"name": "ENJOY THE RIDE"
  },...

我想要这样的东西:

"search": [
  {
    "__typename": "Person" [
        "name": "JOY MISHKA"
        "name": "PAISES BAJOS"
        "name": "ENJOY THE RIDE"
    ]
  } ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。