graphql-compose-mongoose icon indicating copy to clipboard operation
graphql-compose-mongoose copied to clipboard

Pagination not applying addFilterArg

Open dmfilipenko opened this issue 4 years ago • 3 comments

I have such a model. Schema composer:

import { SchemaComposer } from "graphql-compose"
export const schemaComposer = new SchemaComposer<{ req: any }>();

Mongo model:

import moongose, { Schema, Document, Model, ObjectId } from "mongoose"
import { composeMongoose } from "graphql-compose-mongoose"
import { schemaComposer } from "../lib/graphql/schemaComposer"

const orderSchema = new Schema(
  {
    retailerId: String,
  }
)
orderSchema.index({ createdAt: 1 })
const OrderModel: Model<OrderDocument> = moongose.model<OrderDocument>(
  "Order",
  orderSchema
)

const OrderTC = composeMongoose(OrderModel, {
  schemaComposer
})

export { OrderModel, OrderTC }

Schema builder:

import { schemaComposer } from "../../../lib/graphql/schemaComposer"

schemaComposer.Query.addFields({
 orderPagination: orderPagination,
})

const graphqlSchema = schemaComposer.buildSchema()
export default graphqlSchema

Custom resolver:

import { OrderTC } from "../../../../data-model/order"
export const orderPagination = OrderTC.mongooseResolvers.pagination().addFilterArg({
  name: "retailerName",
  type: "String",
})

When I'm trying to add a new filter to OrderTC.mongooseResolvers.pagination, it seems like it doesn't work. I don't see my filter inside of FilterFindManyOrderInput. Any idea what I'm doing wrong?

dmfilipenko avatar Jan 26 '21 11:01 dmfilipenko

Hmmm, I made it works. By adding solution from https://github.com/graphql-compose/graphql-compose-mongoose/issues/288#issuecomment-731782722

import { preparePaginationResolver } from "graphql-compose-pagination"

export const orderPagination = preparePaginationResolver(OrderTC, {
  findManyResolver: OrderTC.mongooseResolvers
    .findMany({ suffix: "Extended" })
    .addFilterArg({
      name: "retailerName",
      type: "String",
    }),
  countResolver: OrderTC.mongooseResolvers.count(),
  name: "pagination", // Default
  perPage: 20, // Default
})

Seems like could be closed.

dmfilipenko avatar Jan 26 '21 12:01 dmfilipenko

@dmfilipenko thanks for the information.

I'll look at this problem in the near time. In the ideal world, this should work as you write in the first comment.

BTW. Many thanks for your donation 🍻

nodkz avatar Jan 27 '21 18:01 nodkz

@nodkz, thanks for a great library!

dmfilipenko avatar Jan 28 '21 05:01 dmfilipenko