запросить в БД неизвестное количество параметров - PullRequest
0 голосов
/ 15 января 2020

Вот простой express маршрутизатор, я хочу дать ему параметры запроса и найти их в БД.

поэтому, если 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);
      })

это решение продолжает давать мне TypeError: Converting circular structure to JSON.

Я понимаю, что объект находится в форме { x : "value" }, и он должен быть JSON объект, подобный этому { "x": "value" }

Я пытался сглаживать, JSON -stringify-safe все еще та же проблема ,

Можете ли вы дать мне решение этой проблемы или альтернативный способ продолжить работу.

1 Ответ

0 голосов
/ 15 января 2020

Я решил проблему, используя пакет узлов, называемый параметрами запроса 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);
      })

вот пакет: https://www.npmjs.com/package/api-query-params

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...