构建环回查询dynamicaly

时间:2017-11-19 00:45:29

标签: mongodb where-clause loopback

我试图动态构建以下查询对象

此代码适用于硬编码对象并返回数据

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?

感谢您提供的任何帮助。 谢谢。

1 个答案:

答案 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);
});