Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 查询数据库中未知数量的参数_Json_Mongodb_Express_Object - Fatal编程技术网

Json 查询数据库中未知数量的参数

Json 查询数据库中未知数量的参数,json,mongodb,express,object,Json,Mongodb,Express,Object,这是一个简单的快速路由器,我想给它一个查询参数,并在数据库中搜索它们 因此,如果URL是这样的api?x=value1应用程序应该查询数据库中的{x:value1} 如果URL是api?x=value1&y=value2应用程序应该查询数据库中的{x:value1,y:value2} 因为我事先不知道参数的数量,所以我创建了一个空对象,并在它后面附加了参数(如果存在) 如果没有参数,我想检索数据库中的所有文档 .get(function (req, res){ let upda

这是一个简单的快速路由器,我想给它一个查询参数,并在数据库中搜索它们

因此,如果URL是这样的
api?x=value1
应用程序应该查询数据库中的
{x:value1}

如果URL是
api?x=value1&y=value2
应用程序应该查询数据库中的
{x:value1,y:value2}

因为我事先不知道参数的数量,所以我创建了一个空对象,并在它后面附加了参数(如果存在)

如果没有参数,我想检索数据库中的所有文档


 .get(function (req, res){

      let update_issue= {};     /*empty object*/

      if(req.query.issue_title){update_issue["issue_title"] = req.query.issue_title}
      if(req.query.issue_text){update_issue["issue_text"] = req.query.issue_text}
      if(req.query.created_by){ update_issue["created_by"] = req.query.created_by } 
           /*append object if param exists*/

      if(Object.keys(update_issue).length !== 0 ){  /*check if that object is not empty*/
        db.collection('issues').find(update_issue, (err, data)=>{
          res.json(data);
          })
        }

      db.collection('issues').find().toArray((err, data)=>{
        res.send(data);
      })
这个解决方案一直给我
类型错误:将循环结构转换为JSON

我知道该对象的格式是
{x:“value”}
,它应该是JSON对象,就像这样
{x:“value”}

我尝试了扁平化,JSON字符串化,但仍然存在同样的问题


你能给我一个这个问题的解决方案,或者一个继续工作的替代方法吗。

我已经使用名为Api查询参数的节点包解决了这个问题

这是我的密码:

var aqp = require('api-query-params');

 .get(function (req, res){

      let update_issue= aqp(req.query);    

      if(Object.keys(update_issue).length !== 0 ){  /*check if that object is not empty*/
        db.collection('issues').find(update_issue, (err, data)=>{
          res.json(data);
          })
        }

      db.collection('issues').find().toArray((err, data)=>{
        res.send(data);
      })

以下是软件包:

您可以执行
console.log(JSON.stringify(data))
并查看它有什么功能吗?另外,发布
问题
收集的示例输入文档。