[英]mongoose 'or' and 'like' operators node.js
我想實現搜索我的頁面。 所以從frontEnd我得到了用戶輸入的搜索值,我需要在我的數據庫中搜索3行限制。 所以我需要像這樣的SQL查詢:SELECT * FROM PRODUCTS p WHERE p.title like'%user_value%'或p.sku like'%user_value%'
我嘗試這樣做:
router.get('/search', function(req, res, next) {
var value = req.query.val;
var query = Product.find({"title": new RegExp('/' + value+'/')}).limit(3);
query.exec(function(err, products) {
if (!err) {
// Method to construct the json result set
var result = JSON.stringify(products);
log.info(products);
res.send(result, {
'Content-Type': 'application/json'
}, 200);
} else {
res.send(JSON.stringify(err), {
'Content-Type': 'application/json'
}, 404);
}
});
但我總是得到空洞的結果。 在我看來,RegExp路徑無效。
UPDATE1: 'like'運算符固定如下:
Product.find({"title": new RegExp(".*" + value + ".*")}).limit(3);
但"or p.sku like '%user_value%'"
問題仍然占據一席之地
您需要在RegExp
構造函數中將修飾符作為第二個參數傳遞。
var query = Product.find({"title": new RegExp(".*" + value.replace(/(\W)/g, "\\$1") + ".*", "i")}).limit(3);
例:
> var value = 'SNR-SFP+W73-60'
> console.log(new RegExp(".*" + value.replace(/(\W)/g, "\\$1") + ".*", "i"))
/.*SNR\-SFP\+W73\-60.*/i
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.