我试图动态构建以下查询对象
此代码适用于硬编码对象并返回数据
var query = {where: {or: [{field1: /franklin/i}, {field2: /franklin/i}]}}
myMongoLoopbackModel.find(query,
function(err, response) {
if (err) cb(new Error('Something went wrong!'));
cb(null, response);
});
查询尝试通过loopback api搜索mongodb,其中field1或field2包含字符串" franklin",该字符串由用户输入提供。
以下是无效的动态代码。
var userinput= new RegExp(userform.inputvalue,'i');
var query= {where: []};
query['where'].push({or: [
{field1: userinput},
{field2: userinput}
]});
myMongoLoopbackModel.find(query,
function(err, response) {
if (err) cb(new Error('Something went wrong!'));
cb(null, response);
});
当我控制台登录第一个工作查询时,我得到:
log working: { where: { or: [ [Object], [Object] ] } }
当我控制台登录第二个非工作查询时,我得到:
log non-working: { where: [ { or: [Array] } ] }
我已经研究过其他类似的帖子,并从这个方面衍生出我的方法。 How to dynamically build MongoDB Query with multiple OR?
感谢您提供的任何帮助。 谢谢。
答案 0 :(得分:0)
where
子句不应该是数组。重写代码:
var userinput= new RegExp(userform.inputvalue,'i');
var query = {where: {or: [{field1: userinput}, {field2: userinput}]}}
myMongoLoopbackModel.find(query,
function(err, response) {
if (err) cb(new Error('Something went wrong!'));
cb(null, response);
});