【发布时间】:2019-07-15 08:00:34
【问题描述】:
要求:
我需要建议编写解析器函数来处理 graphql 过滤器。该过滤器支持 eq、ne、like、contains 和 not like 运算符。
架构:
import { gql } from 'apollo-server-express';
export default gql`
extend type Query {
authGroups(filter: AuthGroupFilterInput): AuthGroupConnection!
}
type AuthGroup implements Node {
id: ID!
name: String
}
input AuthGroupFilterInput {
name: StringFilterInput
}
type AuthGroupConnection {
edges: [AuthGroup!]!
pageInfo: PageInfo
}
input StringFilterInput {
lt: String,
gt: String,
eq: String,
ne: String,
contains: String,
like: String,
notLike: String,
}
`;
GraphQL 查询:
Query {
authGroups(filter: {
name: {
like: '%AD'
}
}
)
{
edges {
id
name
}
}
}
解析器:
authGroups: async (parent, args, { models }) => {
const filter = args.filter;
const filters = filter
? {
where: filter,
}
: {};
const authGroups = await models.authGroup.findAll({
...filters
// where : {
// name: {
// [Sequelize.Op.like] : 'AD%'
// }
// }
});
}
使用的技术:
- 阿波罗服务器
- 快递
- 续集
- PostgreSQL
如何将filter中的操作符替换为[Sequelize.Op.operator]?我尝试在 config.json 中使用operatorsAliases,但没有任何效果。非常感谢您的帮助。
【问题讨论】:
标签: sequelize.js graphql apollo-server