node.js – 将正则expression式发送到服务器

我创build了一个客户端mongodb接口与服务器端mongodb交谈。
它与meteor中实现的迷你混合非常相似。 这里是一个例子:

model.find({"field": /search/}).exec(function(err, model){ construct(model); }); 

现在通常一切正常,除非我使用正则expression式。 我知道有什么问题,但我无法修复。
这个问题,正如你所猜测的那样,是由ajax发送给服务器的regex / regexParameter /被转换为“/ regexParameter /”,而单引号(或双精度)使正则expression式成为普通string。
在服务器我有这样的事情:

 var findObject = req.query.findObject // {"field": "/search/"} :( req.models[config.table] .find(findObject) .exec(function(err, model){ return res.json({ error: err, result: model, }); }); 

有没有什么我可以做到这一点,而不需要编写像遍历每个findObject的代码行,并匹配正则expression式的每个string…?
感谢大家

您是对的 – 您无法在客户端和服务器之间传递RegExp对象,因为在序列化期间,它们被转换为string。

解? (或者 – 解决方法)

在你的查询中使用$regex操作符,所以你不需要使用RegExp对象。

所以这:

 { field: /search/ } 

变成这样:

 { field: { $regex: 'search' } } 

或者,给出一个不区分大小写的search示例:

 { field: { $regex: 'search', $options: 'i' } } 

(而不是field: /search/i

阅读更多关于$regex语法的信息 (包括其中的一些限制 )。