Javascript 为什么switch语句只运行默认值而忽略其余条件?
我正在编写一个端点,该端点在未提供查询时返回数据库中的所有数据,但在提供查询时仅返回满足查询条件的数据Javascript 为什么switch语句只运行默认值而忽略其余条件?,javascript,switch-statement,Javascript,Switch Statement,我正在编写一个端点,该端点在未提供查询时返回数据库中的所有数据,但在提供查询时仅返回满足查询条件的数据 try { const { origin, destination } = req.query; switch (req.query) { case { origin }: { const data = await Trips.tripModel().select('*', `WHERE origin='${origin}'`
try {
const { origin, destination } = req.query;
switch (req.query) {
case { origin }: {
const data = await Trips.tripModel().select('*', `WHERE origin='${origin}'`);
if (!data[0]) return nullResponse(res, 'No trips available from here');
return successResponse(res, 200, data);
}
case { destination }: {
const data = await Trips.tripModel().select('*', `WHERE destination='${destination}'`);
if (!data[0]) return nullResponse(res, 'No trips available to this destination');
return successResponse(res, 200, data);
}
default: {
const data = await Trips.tripModel().select('*');
if (!data[0]) return nullResponse(res, 'No trips available');
return successResponse(res, 200, data);
}
}
}
如果postman上提供了一个查询,即
/api/trips?origin=london
,那么它应该只返回满足条件origin=london
的数据,但它会返回默认条件下的所有数据。{origin}
使用单个属性创建一个新对象。这并不严格等于用于比较的req.query
您需要的值在一个项目中具有可比性。在这种情况下,您可能会与false
进行奇怪的比较,假设这些值具有truthy值或未定义
switch (false) {
case !origin: {
const data = await Trips.tripModel().select('*', `WHERE origin='${origin}'`);
if (!data[0]) return nullResponse(res, 'No trips available from here');
return successResponse(res, 200, data);
}
case !destination: {
const data = await Trips.tripModel().select('*', `WHERE destination='${destination}'`);
if (!data[0]) return nullResponse(res, 'No trips available to this destination');
return successResponse(res, 200, data);
}
}