我正在尝试使用 MERN 堆栈为我的网络应用程序创建一个过滤系统。目前,我能够接收用户对要过滤的内容的请求,接收该数据,查看用户输入的数据(因为用户还可以在特定类别中指定“任何”,这意味着它将发送一个空字符串或数组到后端),解析该数据并将其转换为一个名为的最终对象request
如果用户决定选择,看起来会像这样SDG 8: Decent Work & Economic Growth
作为可持续发展目标,Any
作为作业类型,并且Economy, People
作为主题:
{
sdg: 'SDG 8: Decent Work & Economic Growth',
theme: [ 'Economy', 'People' ]
}
如您所见,assignment_type
值不存在,因为我的后端代码看到他们选择了Any
作为值,它返回一个空字符串,这意味着我不会将其添加到我的最终请求对象中。
现在我有了这个对象,我希望能够将其发送到数据库并返回包含所有这些信息的对象。我想使用$all
为此的查询语句,因为我需要确保如果用户输入'Economy', 'People'
作为主题,包含主题的对象'Economy', 'People', 'Technology'
也会返回,因为用户输入的主题存在于其中。
这是我到目前为止在测试代码中尝试过的,但它似乎不起作用:
var request = {
sdg: 'SDG 8: Decent Work & Economic Growth',
theme: [ 'Economy', 'People' ]
}
const test = await Project.find( {$all: {request}}).sort({ createdAt: -1 })
console.log(test)
上面的代码只返回我的数据库中的所有值,而不是我尝试指定的值。我这样做的主要原因是因为我必须根据用户想要特定值的请求来过滤用户在后端发出的请求,用户可以为所有 3 个类别指定“任何”( sdg、theme、tasking_type),这意味着请求对象将为空,所以本质上我只是在数据库中查找每一个对象,这正是我想要的。
我不确定如何才能将这些请求发送到后端,以便它只找到这些对象。我希望得到一些帮助