使用 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 (将#修改为@)