我有一个GraphQL解析器,它使用布尔类型的参数test
。在此解析器中,我使用Mongoose进行MongoDB聚合,并根据users
参数的值从我的test
集合返回文档。
这是我的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
的值无关) 1}}。
在undefined
阶段是否可以为test
传递一个值,而不会考虑$match
字段?
答案 0 :(得分:1)
您可以这样做
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
变量并更改其值