使用正则表达式使用猫鼬编号

时间:2016-05-05 11:46:54

标签: node.js mongodb mongoose

我正在尝试从DB获得匹配的trainNos。 这就是我的尝试。

var query = trainList.find((req.query.trainNo === '') ? {} : { trainNo: { $regex: req.query.trainNo } });
        query.paginate(options, function(err, response) {
            if (err) console.log(err);
            res.json(response);
        })

但我得到一个错误,说不能使用带有数字的正则表达式。 我也尝试了这个链接Mongoose find() RegExp for Number type field

仍然遇到同样的错误。

帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

var query = trainList.find((req.body.trainNo === '') ? {} : { trainNo : new RegExp(req.body.trainNo, 'i') });
        query.paginate(options, function(err, response) {
            if (err) console.log(err);
            res.json(response);
        })

答案 1 :(得分:0)

如链接的答案所示,您可以使用 $where 运算符,但效率非常低,不推荐使用

var criteria = (req.body.trainNo === '') ? {} : { "$where" : "/"+req.body.trainNo+"/.test(this.trainNo)" };
trainList.find(criteria).paginate(options, function(err, response) {
    if (err) console.log(err);
    res.json(response);
});