【发布时间】:2021-09-15 18:15:58
【问题描述】:
我为不同类别的博客设置了多个复选框 -
我想要实现的是,当我选择一些类别并单击过滤器时,将显示指定的选定博客。我使用查询字符串参数或 URL 参数将所有选中的复选框值发送到 nodejs 后端 -
query 是一个包含所有选定类别的数组
const response = await axios.get(`http://localhost:8000/blog/all?categories=${query}`)
在后台 -
const cat = req.query.categories;
const all = await blogModel.find({ category: { $in: cat } });
我将cat 传递给$in,它再次包含来自前端的所有选定类别,以查找所有匹配的博客。
但我面临的问题是我没有获得匹配的博客,比如当我选择“科学”复选框并单击过滤器时,我能够获得所有具有“科学”类别的博客。但是当我选择说“科学”和“食物”时,我得到一个空数组作为输出,即使我的 MongoDB 中确实有这两个类别的博客。
当我选择“科学”类别时cat 的后端控制台日志 -
当我选择“科学”和“食物”时 -
我得到一个空数组作为输出,而不是“科学”和“食品”类别的所有博客。
总而言之,当我选择多个类别时,我得到一个空数组而不是所选类别的博客。当我只选择一个类别时,我能够获得所选博客。它不适用于多个类别
我确信我错过了一些东西,但不知道用谷歌搜索什么才能得到正确的结果。我也经历了类似的 StackOverflow 问题,但我无法理解需要做什么。我正在为我的投资组合构建一个简单的博客网站,并考虑添加这个“按类别过滤”功能,以便我可以学习如何使用 mongoose 从 MongoDB 中过滤值。请帮我解决这个问题。谢谢。
当我从上面的复选框中选择“科学”和“食物”时,“console.log(req.query.categories)”也会输出这个 -
【问题讨论】:
标签: node.js mongodb express mongoose query-parameters