【问题标题】:Express query fails with integers快速查询因整数而失败
【发布时间】:2016-10-08 20:56:47
【问题描述】:

我正在运行一个 Express 服务器来从 MongoDB 创建端点,我基于本指南 https://devcenter.heroku.com/articles/mean-apps-restful-api

在尝试定义查询字符串时,我有以下功能:

app.get("/contacts", function(req, res) {
  db.collection(CONTACTS_COLLECTION).find(req.query).toArray(function(err, docs) {
      res.status(200).json(docs);  
  });
});

对于使用查询参数是字符串的查询,这可以按预期工作,例如/contacts?name=Bob。但是,如果我正在查询的字段恰好是一个整数(例如,使用查询 /contacts?age=21),我发现响应会产生一个空数组... []

【问题讨论】:

    标签: node.js mongodb express request endpoint


    【解决方案1】:

    请求查询中的所有内容都是字符串,因此如果您将 url 设置为 age=21,那么您必须将其解析为整数。

    app.get("/contacts", function(req, res) {
       var condition = {};
      if(req.query.age) {
        condition.age = parseInt(req.query.age, 10);
      }
      db.collection(CONTACTS_COLLECTION).find(condition).toArray(function(err, docs) {
          res.status(200).json(docs);  
      });
    });
    

    【讨论】:

      【解决方案2】:

      否定它。 http 请求将所有内容都解释为字符串。

      我在express-query-int package找到了解决办法

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-06
        相关资源
        最近更新 更多