在动态查询的地方构建环回

build loopback where query dynamicaly

我正在尝试动态构建以下查询对象

此代码适用于硬编码对象和 returns 数据

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

查询正在尝试通过环回 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] } ] }

我研究了其他类似的帖子,并从这篇帖子中得出了我的方法。

如果您能提供任何帮助,我将不胜感激。 谢谢。

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