快速查询因整数而失败

Express query fails with integers

我是 运行 一个 Express 服务器,用于根据本指南 https://devcenter.heroku.com/articles/mean-apps-restful-api

基于 MongoDB 创建端点

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

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),我发现响应生成一个空数组... []

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

我在 express-query-int package

中找到了解决方案

请求查询中的所有内容都是字符串,因此如果您将 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);  
  });
});