这真的很奇怪,我无法理解我做错了什么。我有一个复选框,当检查时,将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 Private
router.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");
}
}
});
心有法竹
不负相思意
随时随地看视频慕课网APP
相关分类