gpt4 book ai didi

javascript - Mongoose 'or' 和 'like' 运营商 node.js

转载 作者:可可西里 更新时间:2023-11-01 09:35:48 24 4
gpt4 key购买 nike

我想为我的页面实现搜索。所以从前端我从用户输入中获得了搜索值,我需要在我的数据库中搜索 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 路径无效。

更新 1:'like' 运算符固定为:

Product.find({"title": new RegExp(".*" + value + ".*")}).limit(3);

但是 “或 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

关于javascript - Mongoose 'or' 和 'like' 运营商 node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31628836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com