我尝试使用如下函数进行mongoose查询:
/*
* @param {function} Model - Mongoose Model
* @param {String} searchText- Text that will be used to search for Regexp
* @param {String} Key- key to search into a Model
* @param {object} res - Response of node.js / express
*/
function _partialSearch (Model, searchText, key, res) {
var search = new RegExp(searchText, "i");
Model.find({ key : { $regex : search } })
.exec(function (err, docs) {
if(err) log(err);
else {
res.json(docs);
}
})
}
我的问题是查询采用参数键文字并像这样搜索:
我需要这个:
_partialSearch(Products, 'banana', 'fruts', res)
我认为:
Products.find({ 'fruts' : 'banana})
但我明白了:
Products.find({ key : 'banana})
答案 0 :(得分:1)
使用 bracket notation 动态创建查询对象,以便按以下步骤重构您的功能:
function _partialSearch (Model, searchText, key, res) {
var search = new RegExp(searchText, "i"),
query = {};
query[key] = { $regex : search };
Model.find(query)
.exec(function (err, docs) {
if(err) log(err);
else {
res.json(docs);
}
});
}
答案 1 :(得分:0)
您无法直接将变量用作对象键,但假设您正在使用Node.js 4.0或更高版本,则可以使用其对computed property names的ES6支持来围绕{Can't find the 'libpq-fe.h header when trying to install pg gem执行此操作括号中的1}}:
key