javascript - 如果条件没有在 Express 路由中触发
问题描述
这真的很奇怪,我无法理解我做错了什么。我有一个复选框,当检查时,将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");
}
}
});
解决方案
你的searchByName
参数是一个字符串。用于req.params.searchByName === 'true|false'
检查是否为true
或false
。
推荐阅读
- azure-cosmosdb - CosmosDB - MongoDB API - 20 个并行事务使用 Java Spring @Transactional(readOnly=true) 导致错误(提交失败,事务不活动)
- react-native - 如何在博览会性能屏幕中知道应用程序性能是否良好?
- flutter - 未处理的异常:NoSuchMethodError:方法'showNotificationDaily'在flutter中被调用为null
- android - Android:发送 Whatsapp 消息
- python - 如何将条件传递给游标中的 PostgreSQL 查询
- sql - 当数据为 VARCHAR 时如何在 SQL 中查询数字?
- android - 如何使 aar 成为库中的默认工件
- c# - 从列表中的 db 获取值
- python - 如何在每个具有唯一键的多个节点之间划分 Spark Dataframe
- node.js - Socket.io 一对一聊天