繁体   English   中英

神秘无效的猫鼬查询

[英]Mysteriously Invalid Mongoose Query

我被MEPN应用程序中的一个顽固错误困住了。

该伪代码应该从用户表单中提交的选项中组合一个Mongoose查询,然后使用该查询搜索集合。

var query = [];
query.push("{name:"+req.body.name+"}");
query.push("{status:{$in:["+req.body.statusarray+"]}}");
query.push("{range:{$gte:"+req.body.min+",$lte:"+req.body.max+"}}");

Collection.find(query, function(error, cursor){
  if(error) console.log("ERROR: "+error);
  else //do something
})

而是打印ERROR: ObjectParameterError: Parameter "filter" to find() must be an object, got {name: 'foobar'},{status : {$in : ['1','2','3']}},{range: {$gte:'0',$lte:'100'}}

使用Collection.find(JSON.parse(query), ...)}会导致SyntaxError: Unexpected token n in JSON at position 1

然后,如果在将查询传递给JSON.parse()之前将查询括在{}括号中,它将Unexpected token { in JSON at position 1打印出Unexpected token { in JSON at position 1

我构造此查询的方式有问题吗?

Collection.find()一个Object,但是您要向其传递一个字符串数组,这就是为什么会收到该错误的原因。

您可以通过多种方式创建对象,但最简单的方法就是创建对象文字:

var query = {
    name: req.body.name,
    status: {$in:req.body.statusarray},
    range: {$gte: req.body.min, $lte:req.body.max }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM