【问题标题】:Query MongoDB with regex that ignores punctuation使用忽略标点符号的正则表达式查询 MongoDB
【发布时间】:2019-04-02 23:33:03
【问题描述】:

我正在尝试通过 react-router-dom 的 NavLink 查询 MongoDB 中的集合以查找名称与字符串 prop 匹配的项目。通过 NavLink 的道具用连字符代替空格,但是某些名称中带有连字符以及空格。这导致未找到错误,因为我当前的正则表达式用空格替换了所有连字符。

在前端,我使用的是 NavLink,因此我摆脱了空格以遵循 URL 最佳实践(一个 url 示例:example.com/this-persons-name),它将参数 this-persons-name 准确发送到我的数据库。

现在我正在使用以下内容:

db.collection('people').findOne({ name: {'$regex': req.params.person.replace(/-/g, ' '), $options: 'i'}})

问题在于,如果名称中已经包含连字符(例如:this-persons name),则无法找到此人,因为它会搜索 this persons name

这应该适用于以下字符串:

thispersonsname

this-persons name

this-persons-name

this persons name

【问题讨论】:

  • 为什么不在可能已经有一个连字符的地方放两个连字符?
  • 代码现在替换所有实例 - 所以在这种情况下它会添加两个空格

标签: javascript regex reactjs mongodb express


【解决方案1】:

我通过以不同的方式实现它来解决这个问题。我为每个项目创建了一个slug 属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-10
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多