這真的很奇怪,我無法理解我做錯了什么。我有一個復選框,當檢查時,將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"); } }});
如果條件沒有在 Express 路由中觸發
心有法竹
2022-06-16 15:18:02