gpt4 book ai didi

javascript - 为什么 switch 语句只运行默认情况而忽略其余条件?

转载 作者:行者123 更新时间:2023-11-30 19:26:06 25 4
gpt4 key购买 nike

我正在编写一个端点,如果未提供查询则返回数据库中的所有数据,但如果提供查询则仅返回满足查询条件的数据

    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,用于比较的值。

您需要在 switch statement 中具有可比性的值.在这种情况下,您可以与 false 进行奇怪的比较,假设值具有真值或 undefined

 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);
}
}

关于javascript - 为什么 switch 语句只运行默认情况而忽略其余条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56891739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com