2017-09-16 33 views
0

我只想問一下,我怎樣才能將變量傳遞給貓鼬查詢?我已經試過這個,但總是得到一個空的結果。如何在mongoose object.find上傳遞變量值?

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變量更改爲實際值,則會返回預期結果。

請幫助。

順便說一句,有沒有辦法避免new RegExp

+0

試試'{$ regex:search}'。 – JohnnyHK

+0

噢謝謝,明白了。 – zer09

+0

@JohnnyHK你對我看到這之前,我評論,也沒有關閉的問題,所以我評論 – Vignesh

回答

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

抱歉,但你的例子不工作。所以我發佈了基於[@JohnnyHK](https://stackoverflow.com/users/1259510/johnnyhk)的評論。 – zer09