Why I get syntax error in graphql when I use enum in filter?

586 Views Asked by At

For every user has gender property. The gender property is enum in graphql.

I want to query all users that have female and male values only.

Why when I write my query on graphql playground I got an error message?

I also try to write: userMany(filter: { gender: [female, male] }) { but I got syntax error.

Is there another way to write this query to get the results?

The query:

{
  userMany(filter: { gender: female AND male }) {
    name
    age
    gender
    someMixed
    salaryDecimal
    virtualField
  }
}

The error:

{
  "errors": [
    {
      "message": "Syntax Error: Expected :, found Name \"male\"",
      "stack": [
        "Syntax Error: Expected :, found Name \"male\"",
        "",
        "GraphQL request:2:41",
        "1 | {",
        "2 |   userMany(filter: { gender: female AND male }) {",
        "  |                                         ^",
        "3 |     name",
        "    at syntaxError (/app/node_modules/graphql/error/syntaxError.js:15:10)",
        "    at expectToken (/app/node_modules/graphql/language/parser.js:1428:38)",
        "    at parseObjectField (/app/node_modules/graphql/language/parser.js:588:3)",
        "    at item (/app/node_modules/graphql/language/parser.js:571:12)",
        "    at any (/app/node_modules/graphql/language/parser.js:1500:16)",
        "    at parseObject (/app/node_modules/graphql/language/parser.js:576:13)",
        "    at parseValueLiteral (/app/node_modules/graphql/language/parser.js:470:14)",
        "    at parseArgument (/app/node_modules/graphql/language/parser.js:348:12)",
        "    at many (/app/node_modules/graphql/language/parser.js:1515:16)",
        "    at parseArguments (/app/node_modules/graphql/language/parser.js:334:54)",
        "    at parseField (/app/node_modules/graphql/language/parser.js:321:16)",
        "    at parseSelection (/app/node_modules/graphql/language/parser.js:295:76)",
        "    at many (/app/node_modules/graphql/language/parser.js:1515:16)",
        "    at parseSelectionSet (/app/node_modules/graphql/language/parser.js:282:17)",
        "    at parseOperationDefinition (/app/node_modules/graphql/language/parser.js:192:21)",
        "    at parseExecutableDefinition (/app/node_modules/graphql/language/parser.js:169:12)"
      ]
    }
  ]
}
1

There are 1 best solutions below

0
Shlomi Levi On BEST ANSWER

Try this:

{
  userMany(filter: {OR: [{gender: female}, {gender: male}]}) {
    name
    age
    gender
    someMixed
    salaryDecimal
    virtualField
  }
}