如何传递Mongoose对象上的可变值



我只想问,如何将变量传递到猫鼬查询?我已经尝试过,但是总是取得空洞的结果。

exports.persontSearch = function (req, res, search) {
PersonInfo.find({$or: [
    // {'name.first': /.*search.*/},
    // {'name.last': /.*search.*/}
    // {'name.first': {$regex: /.* + search + .*/}},
    // {'name.last': /.*search.*/}
    {'name.first': new RegExp('/.*' + search + '/.*')},
    {'name.last': /.*search.*/}
]}, function (err, person) {
    if (err) {
        winston.error(err);
        res.json(err);
    }
    res.json({
        result: person
    });
});

};

,但是如果我将search变量更改为实际值,则返回了预期的结果。

请帮助。

btw是否可以避免new RegExp

在@johnnyhk提供的评论中。工作样本就是这样。

exports.personSearch = function (req, res, search) {
    PersonInfo.find({
        $or: [
            { 'name.first': { $regex: search } },
            { 'name.last': { $regex: search } }
        ]
    }, function (err, person) {
        if (err) {
            winston.error(err);
            res.json(err);
        }
        res.json(person);
    });
};

尝试以下:

searchvalue = "/^abc/i";
exports.persontSearch = function (req, res, search) {
    PersonInfo.find({$or: [
         {'name.first': {$regex: searchvalue }}
    ]}, function (err, person) {
        if (err) {
            winston.error(err);
            res.json(err);
        }
        res.json({
            result: person
        });
    });
    };

最新更新