如何在mongoose object.find上传递变量值?

时间:2017-09-16 04:08:54

标签: mongoose

我只想问一下,如何将变量传递给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吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

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
        });
    });
    };

答案 1 :(得分:0)

@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);
    });
};