Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么switch语句只运行默认值而忽略其余条件?_Javascript_Switch Statement - Fatal编程技术网

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