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
语法的信息 (包括其中的一些限制 )。