MongoDB-SyntaxError:$ regex

时间:2018-12-27 19:35:43

标签: reactjs mongodb meteor

我使用$ regex在mongodb集合中查找一条记录。基本上,我将其用作搜索以返回部分或全部与“查询”匹配的所有记录。直到我有[,(,“等)这样的字符,它都可以正常工作。所有选项都可以避免刹车结果,并且我得到0条记录。

我尝试了类似于escape-regexp的程序包,但是这些字符串会产生制动结果并且与数据库记录不匹配。

const query = "MacBook Pro ("
const objectName = "laptops"

return Inventory.find({
    $and: [
        { 'type': objectName},
        { 'specs': {$elemMatch: {'specValueLabel': {$regex: ".*" + query + ".*", $options: "i"} }}}
    ] });

// returns the following error: SyntaxError: Invalid regular expression: /.*macbook pro (.*/: Unterminated group

1 个答案:

答案 0 :(得分:0)

您可以使用meteor npm install lodash

安装lodash

除非别无选择,否则您不再需要使用大气包装。

问题是您正在做/.*MacBook Pro (./,对Javascript说它已经是一个正则表达式。 (字符是捕获组的开始。

因此将字符串作为带引号的字符串传递以进行转义,例如_.escapeRegExp(".*MacBook Pro (.*")

您可以通过访问www.lodash.com并打开Chrome开发工具(该网站上已加载Lodash)并输入控制台来进行尝试:

_.escapeRegExp(".*MacBook Pro (.*") -> "\.\*MacBook Pro \(\.\*"

这将为您修复