如何在正则表达式中使用request.query

我有这个搜索控制器,我想将其设置为检查搜索输入中的每个字母,但是我不知道如何使用正则表达式来实现。

module.exports.search = (req,res,next) => {
  Character.find({
    $or: [
      { firstName: req.query.search },{ lastName: req.query.search }
    ]
  })
    .then(characters => {
      res.status(200).send(characters);
    })
    .catch(next);
}

我也尝试过

{ firstName: /req.query.search/ }

,但是它不起作用。任何帮助都会很棒。

sun19870714 回答:如何在正则表达式中使用request.query

我找到了解决方案。我需要创建函数来放置整个正则表达式,然后将req.query传递给控制器​​内部

module.exports.search = (req,res,next) => {
  if (req.query.search) {
    const regex = new RegExp(escapeRegex(req.query.search),"gi");

    Character.find({
      $or: [{ firstName: regex },{ lastName: regex }]
    })
      .then(characters => {
        res.status(200).send(characters);
      })
      .catch(next);
  }
};

function escapeRegex(text) {
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");
}
本文链接:https://www.f2er.com/3159905.html

大家都在问