4

User スキーマの仮想フィールドで「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);
        });

User の mongoose スキーマでの仮想フィールド宣言

//full name
UserSchema.virtual('fullName')
    .get(function() {
    return this.firstName + ' ' + this.lastName;
});

fullNameフィールドの正規表現を適切に機能させるための正しいアプローチは何ですか?

4

1 に答える 1

5

すでに述べたように(そして私たちに示したように)、fullNameは仮想であり、アプリケーション層にあります。照会することはできません。

参照: mongoDB (mongoose) での仮想フィールドによるソート

于 2013-06-05T16:52:03.133 に答える