【发布时间】:2021-02-26 10:17:08
【问题描述】:
我正在使用 Apollo、typescript 和 TypeOrm 创建一个 graphQL 查询。目前我只有一张名为 users 的表。然后我有一个 getUsers graphql 查询。使用 typeOrm,我使用 find() 方法在解析器中返回用户。我的问题是 typeOrm 或 Apollo 中有一种方法可以对用户设置可选过滤器,因此我可以传入可选的 id 或不传入任何内容以返回同一查询中的所有用户。哪些选项可用于接受本质上可选的过滤器,而无需进行多个查询。谢谢。
我想使用的查询
query noFilters {
getUsers {
id
firstName
}
}
## return all users
query withFilters {
getUsers (filters: {id: [1]}) {
id
firstName
}
}
## return just user with ID of 1
用户实体
import {Entity, PrimaryGeneratedColumn, Column, BaseEntity} from "typeorm";
@Entity()
export class User extends BaseEntity{
@PrimaryGeneratedColumn({name: "user_id"})
id: number;
@Column({name: "first_name" })
firstName: string;
}
解析器
export const resolvers = {
Query: {
getUsers: async (_: any, args: any) => {
const { id } = args;
return await User.find({where: {}});
}
}
};
类型
export const typeDefs = gql`
type Query {
getUsers(id: [Int!]): [User]
}
type User {
id: Int!
firstName: String!
}
`;
【问题讨论】:
标签: typescript express graphql apollo typeorm