簡體   English   中英

mongoose'或'和'like'運算符node.js

[英]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

在您的RegExp對象中,您應該這樣做:

new RegExp(value)

而不是這個:

new RegExp('/' + value + '/')

請參閱此鏈接: RegExp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM