У меня есть распознаватель GraphQL, который проходит test
аргументов типа Boolean. Внутри этого преобразователя я использую Mongoose для выполнения агрегации MongoDB, возвращающей документы из моей коллекции users
на основе значения аргумента test
.
Вот как выглядит testUsers
распознаватель GraphQL testUsers
:
Query: {
testUsers: async (root, args, context) => {
return await User.aggregate([
{
$match: {
test: args.test
}
}
])
}
}
Здесь args.test
может быть true
, false
или undefined
. Обработка true
и false
случаев - это просто вопрос прямой передачи, но я хочу вернуть всех пользователей (независимо от значения test
), если args.test
не undefined
.
Есть ли значение, которое я могу передать для test
на этапе $match
, которое не будет принимать во внимание поле test
?
Вы можете сделать что-то вроде этого
testUsers: async (root, args, context) => {
let match = { test: args.test }
if(typeof args.test === 'undefined') {
match = {}
}
return await User.aggregate([
{
$match: match
}
])
}
Вы можете взять переменную let
и изменить ее значение, если args.test
не определен