虚拟场上的猫鼬正则表达式

时间:2013-06-05 16:12:33

标签: node.js mongodb mongoose

我想运行一个正则表达式来在我的用户架构中的虚拟字段上实现“LIKE”类型功能。

以下声明适用于 * fullName *

之外的所有字段
var searchString = stringUtils.removeMultipleSpaces(stringUtils.stripSpecialCharacters(req.param('searchString')));
        var regex = new RegExp(searchString);
        var query = User.find().or([{ 'firstName' : { $regex: regex}}, { 'lastName': { $regex: regex }},
            { 'userName': { $regex: regex }}, { 'fullName' : {$regex: regex }}]).sort('lastName');
        query.select('firstName lastName userName fullName');
        query.exec(function(err, users) {
            res.send(users);
        });

用户

的mongoose模式中的虚拟字段声明
//full name
UserSchema.virtual('fullName')
    .get(function() {
    return this.firstName + ' ' + this.lastName;
});

使fullName字段正则表达式正常工作的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

正如您已经说过的(并向我们展示),fullName是虚拟的,它位于应用程序层。你不能查询它。

另请参阅:Sorting by virtual field in mongoDB (mongoose)