如果条件没有在 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");

    }

  }

});


心有法竹
浏览 112回答 1
1回答

不负相思意

你的searchByName参数是一个字符串。用于req.params.searchByName === 'true|false'检查是否为true或false。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript