【问题标题】:How can I use an array with req.query?如何将数组与 req.query 一起使用?
【发布时间】:2020-12-04 16:03:09
【问题描述】:

我的问题是如何将我的数据结构带入查询?我希望能够通过一个查询搜索所有内容。我该如何实现?

我尝试输入查询所以 => ?basicData.tasks.title=Fleetmanagement.有了它,我可以找到车队管理中的所有数据。但现在我想用两个标题进行搜索。

例子:

?basicData.tasks.title=Fleetmanagement&basicData.tasks.title=OCPP Backend

但它不起作用。我怎样才能做到这一点?

这是我的数据结构:

  "basicData": {
      "tasks":[
         {"title": "Fleetmanagement"},
         {"title": "OCPP Backend"}
        ]
    }

我的代码:

export const allCompanyData = (req: Request, res: Response) => {
  if (req.query) {
    Company.find(req.query).then(docs => {
      logger.info(`Query works ${req.query}`);
      res.json({
        query: req.query
      })
      res.status(200).json(docs);
    }).catch(err => {
      logger.error(`Error ${err}`);
      res.status(400).json(`Error ${err}`)
    })
  } else {
    Company.find()
      .then((items: any) => {
        logger.info("Successful finding");
        res.status(200).json(items);
      })
      .catch((err: any) => {
        logger.error(`Error ${err}`);
        res.status(400).json(`Error ${err}`);
      });
  }
};

【问题讨论】:

    标签: javascript mongodb typescript express mongoose


    【解决方案1】:

    您将[] 附加到客户端的参数名称以表明您正在提供一个数组:

    ?basicData.tasks.title[]=Fleetmanagement&basicData.tasks.title[]=OCPP%20Backend
    

    那么req.query 将是:

    { 'basicData.tasks.title': ['Fleetmanagement', 'OCPP Backend'] }
    

    【讨论】:

    • 不幸的是,这不起作用。如果我像这样输入它,那么我会得到一个空数组。
    猜你喜欢
    • 1970-01-01
    • 2017-04-23
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 2017-02-25
    • 2015-05-02
    相关资源
    最近更新 更多