Skip to content

Calling resolver.getArgs() resets the filter arguments #288

@Thammada

Description

@Thammada

When calling .getArgs() on a mongoose resolver, arguments added by addFilterArg will get reset.
I also observe that calling .addFilterArg() on a cloned resolver also affect the original resolver, but calling .addArg() doesn't

See the following snippet:

const mongoose = require('mongoose');
const { composeMongoose } = require('graphql-compose-mongoose');

const Person = mongoose.model('Person', new mongoose.Schema({
  firstName: String,
  lastName: String
}))

const PersonTC = composeMongoose(Person)

const findManyResolver = PersonTC.mongooseResolvers.findMany()

const personsResolver = PersonTC.mongooseResolvers.findMany().clone().addFilterArg({
  name: 'fullName',
  type: 'String'
}).addArgs({
  username: 'String'
})

console.log('personsResolver username', personsResolver.hasArg('username')) // true -> OK, expected
console.log('personsResolver filter.fullName', personsResolver.getArgITC('filter').hasField('fullName')) // true -> OK, expected

console.log('findManyResolver username', findManyResolver.hasArg('username')) // false -> OK, expected
console.log('findManyResolver filter.fullName', findManyResolver.getArgITC('filter').hasField('fullName')) // false -> NOT EXPECTED, .addFilterArg not consistent with .addArg

PersonTC.mongooseResolvers.findMany().getArgs() // this line resets the `filter` arguments
// calling findManyResolver.getArgs() does not trigger the issue

console.log('personsResolver username', personsResolver.hasArg('username')) // true -> OK, expected
console.log('personsResolver filter.fullName', personsResolver.getArgITC('filter').hasField('fullName')) // false -> NOT EXPECTED, `filter.fullName` suddenly disappeared

console.log('findManyResolver username', findManyResolver.hasArg('username')) // false
console.log('findManyResolver filter.fullName', findManyResolver.getArgITC('filter').hasField('fullName')) // false

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions