如何解决使用 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 举报,一经查实,本站将立刻删除。