【发布时间】:2015-10-16 04:57:51
【问题描述】:
我想实现对我的页面的搜索。所以从前端我从用户的输入中获得了搜索值,我需要在我的数据库中搜索 3 行限制。 所以我需要这样的sql查询: SELECT * FROM PRODUCTS p WHERE p.title like '%user_value%' or 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);
但是"or p.sku like '%user_value%'"的问题还是占了一席之地
【问题讨论】:
-
您是否尝试在 RegExp 中包含变量
value?然后var query = Product.find({"title": new RegExp(value)}).limit(3); -
mm,只是值,但我需要像 %value%?
-
试试
var query = Product.find({"title": new RegExp(".*" + value + ".*")}).limit(3); -
thx,这行得通,但是我如何添加大小写忽略? ,我应该把'i' attr放在哪里?
标签: javascript regex node.js mongodb