这真的很奇怪,我无法理解我做错了什么。我有一个复选框,当检查时,将searchByName参数设置为true某些React组件中的参数。然后,我正在使用axios需要.get搜索并返回用户列表的路线。如果searchByName是true,则按名称查询MongoDB,如果是 ,则false使用其他一些参数进行查询。问题是,当我searchByName在路由中进行控制台时,我看到它的值正确(真或假),但是,我检查它是真还是假的条件不会触发,我总是得到结果true案子。我添加console.log("Im name")并console.log("Im city")查看代码是否触发,但总是name如此,即使searchByName是错误的。你能帮忙解决这个问题吗?// @route GET api/report/:search/:searchByName// @desc Get users// @access Privaterouter.get("/:search/:searchByName", auth, async (req, res) => { if (req.params.searchByName) { console.log("im name"); try { const query = req.params.search; const reports = await Report.find({ name: { $regex: query }, isPublic: true }) .select([ "name", "status", "startDate", "country", "zipcode", "city", "address" ]) .populate("users", [ "name", "status", "startDate", "country", "zipcode", "city", "address" ]); res.json(reports); } catch (err) { console.error(err.message); res.json(err); res.status(500).send("Server Error"); } } else if (!req.params.searchByName) { console.log("im city"); try { const query = req.params.search; const reports = await Report.find({ $or: [{ city: { $regex: query } }, { zipcode: { $regex: query } }] }) .select([ "status", "startDate", "country", "zipcode", "city", "address" ]) .populate("users", [ "status", "startDate", "country", "zipcode", "city", "address" ]); res.json(reports); } catch (err) { console.error(err.message); res.json(err); res.status(500).send("Server Error"); } }});
1 回答
不负相思意
TA贡献1777条经验 获得超10个赞
你的searchByName参数是一个字符串。用于req.params.searchByName === 'true|false'检查是否为true或false。
添加回答
举报
0/150
提交
取消
